概要

记录一下在学习和练习过程中所遇到的一些细节问题


一. 向量

1.向量的基础

(1)R语言中,向量元素从一开始标号,vector[0] 用于储存向量的类型

(2)向量的嵌套,在R语言中向量之间是可以以嵌套的形式来指定对应元素,例如:

x <- c(2, 4, 6, 8)
y <- c(TRUE, TRUE, FALSE, TRUE)
print(x[y])

结果为:

> print(x[y])
[1] 2 4 8

(3)选取向量的部分。除了基本的可以使用数字坐标来选择向量的部分 ,也可以如上,在[ ]内输入对应坐标构成的向量来一口气选择多个目标:

> m[c(1,4,5)]
[1] "1" "5" "6"

2.向量的计算

(1)四则运算

在R语言里向量的基本计算与大多数语言的规则相同,所有的运算法针对于每一个单独的元素来进行,甚至包括逻辑运算符,例如:

p <- c(1,2,3)
p+3

所得的结果为:

[1] 4 5 6

比较通俗易懂。

(2)向量之间的运算

维度相同的向量可以直接地在对应的位置进行运算。针对维度不同的向量,运算会采取类似于循环处理的方法:

p <- c(4,5,6,7)
q <- c(2,3,4)
p/q
q/p

所得结果为:

> p/q
[1] 2.000000 1.666667 1.500000 3.500000
Warning message:
In p/q : longer object length is not a multiple of shorter object length
> q/p
[1] 0.5000000 0.6000000 0.6666667 0.2857143
Warning message:
In q/p : longer object length is not a multiple of shorter object length

二.矩阵

1.矩阵的基础

(1)对于一个矩阵,matrix[0,0]储存了表示变量为矩阵的表示,打印出来的为:

<0 x 0 matrix>

第0行和第0列分别储存了的矩阵的行名和列名,由[0,]和[,0]调用出来。但需要注意的是,matrix[0,x]和matrix[0]储存的仍然是每一列(向量)的数据类型。

(2)创建矩阵时,若元素无法被规定的行数和列数整除或者无法填满目标大小的矩阵,则元素会自动地进行重复,填满矩阵为止:

> m <- matrix(1:7,nrow=3)
Warning message:
In matrix(1:7, nrow = 3) :data length [7] is not a sub-multiple or multiple of the number of rows [3]
> m[,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    1
[3,]    3    6    2

此为R语言的特色之一,在dataframe中也应用同样的规则。

(3)选中某行并进行操作。R语言中,可以通过数字坐标以及行名和列名选择矩阵中的某个元素或某行。对于选中的行列可以直接用 <- 来赋值以达到替换的目的。

三. dataframe

1.dataframe 基础

(1)表头的创建方法

df2 <- data.frame( x = character(), y = integer(), z = double() , stringsAsFactors = FALSE );

(2)dataframe的创建方法

基本的方法是使用data.frame() 这个函数来创建,在括号中依次输入列向量即可,若向量的已经进行了每个元素的命名,则会直接成为dataframe的row_name。

(3)表的合并

可以用cbind和rbind函数分别依照列和行对dataframe进行合并。当变量行数不同时,采取自动填充的规则;变量的列数或列名不同时,会直接接报错:

df4 <- data.frame( data = 1:10, group = c("A","B") );
df6 <- data.frame( length = sample(1:100, 5), width = sample(1:100, 5) );
df7 <- cbind(df4,df6)
df5 <- data.frame( data = 1)
df8 <- rbind(df4,df5)
df7

运行结果:

> df4 <- data.frame( data = 1:10, group = c("A","B") );
> df6 <- data.frame( length = sample(1:100, 5), width = sample(1:100, 5) );
> df7 <- cbind(df4,df6)
> df5 <- data.frame( data = 1)
> df8 <- rbind(df4,df5)
Error in rbind(deparse.level, ...) : 变量的列数不对
> df7data group length width
1     1     A      2    87
2     2     B     61    54
3     3     A     82    47
4     4     B     21    32
5     5     A     35    17
6     6     B      2    87
7     7     A     61    54
8     8     B     82    47
9     9     A     21    32
10   10     B     35    17

(4)dataframe的 [0,x]储存每一列的数据类型,而一旦x为一个向量,eg.1:3 ,输出变为对应位置的行名字。

(5)在R语言里默认行为个体,列为不同属性。

(6)一种删除某个变量的方法,直接令dataframe的某一列为NULL

2.tibble

(1) tibble相当于dataframe的升级版,由tibble这个包来提供。其创建方法同dataframe,由tibble() 直接完成;

(2)tibble表头创建:

tb <- tibble( x = character(), y = integer(), z = double() );
dim(tb);## [1] 0 3

注意维度的结果;

(3)可以使用add_row() 函数向tibble里面添加行,但tibble本身不能直接插入到另一个tibble里面;完成tibble的合并可以使用bindrow()函数,同理到列相关的函数。

(4)tibble与dataframe的不同:

其一:

tibble evaluates columns sequentially


rm(x,y); ## 删除可能存在的 x , y
tibble(x = 1:5, y = x ^ 2); ## 可以用 tibble 这样做
## # A tibble: 5 x 2
## x y
## <int> <dbl>
## 1 1 1
## 2 2 4
## 3 3 9
## 4 4 16
## 5 5 25data.frame(x = 1:5, y = x ^ 2); ## 但 data.frame 不行
## Error in data.frame(x = 1:5, y = x^2): 找不到对象'x'

其二:

取部分时,tibble的部分永远是tibble,而dataframe的部分可能是dataframe或向量(取单行时);

其三:

tibble循环时,仅长度为1或登场时可以进行循环,对于例如3个元素需要填充4行的情况会判定失败;

其四:

dataframe在取某一列时,输入列的名可以进行局部匹配,从而找到对应列,而tibble不行。

3.读取和写入

(1)使用到readr这个包,类似于python中的pandas这个包,内含有read_csv()等函数。在读取时还可以预设读取时所采取的数据形式:

myiris2 <- read_csv("data/talk03/iris.csv", col_types = cols(
Sepal.Length = col_double(),
Sepal.Width = col_double(),
Petal.Length = col_double(),
Petal.Width = col_double(),
Species = col_character()
));

写入的例子:

Comma delimited file: write_csv(x, path, na = “NA”, append = FALSE, col_names = !append)

R语言自学笔记:向量、矩阵及dataframe基础相关推荐

  1. R语言学习笔记——向量

    说明:报了学校的课<R语言与统计分析>,随手分享一下课堂笔记.最近比较忙所以就不整理了直接发叭,一切随缘,如果感兴趣的话可以自己测试代码输出结果. 直接创建向量 x<-1:5 x&l ...

  2. R语言自学笔记:数据处理、数据分布及数据检验

    一. 基本的数据统计处理 1. 数据的展示 对于一组数据,可以有许多统计分析的方法. (1) 基本信息 mean():求平均值 sum():求和 sd():求总体标准差--(样本-期望)/(样本数) ...

  3. R语言自学 1 - 向量

    R - 向量 R语言的基本资料单位称为向量(vector).向量有不同类型,包括数值向量(numeric).整数向量(integer).文字向量(character).逻辑值向量(logical).日 ...

  4. R语言学习笔记:矩阵与数组(array)

    元素可以保存在多个维度的对象中,数组存储的是多维数据元素,矩阵的是数组的特殊情况,它具有两维. 创建数组的几种方法. 1. > m<-c(45,23,66,77,33,44,56,12,7 ...

  5. R语言自学笔记-----R绘图(二)---饼图

    饼图也称圆形图,主要用来分类数据的可视化,用圆形内各个扇形的角度来表示样本或总体中各个组成部分的比例,主要用于研究数据的结构问题,这里我们介绍一下饼图的简单绘制方法. 一.平面饼图的绘制 首先我们来介 ...

  6. R语言自学笔记-----数据转换

    一.从数据集中取子集 这里以数据框x做演示 x <= read_excel('车险数据.xlsx') (一)索引的方法 1.常规方法索引取子集 x1 <- x[c(1:30),c(1:3) ...

  7. R语言自学笔记:回归分析基础

    一.  线性回归 1. lm()函数返回的是对于输入变量的预测模型,返回的结果可以配合许多函数进行使用. > lm.model <- lm(wt ~ mpg, data = mtcars) ...

  8. R语言学习笔记NO.2 数据处理的基础操作_变量/观测的增改选排

    我们先创建一个基础数据框df,用madata记录初始值. 初值备份是一个良好的习惯,这可避免你在误操作后丢失初值. > manager<-c(1,2,3,4,5) > date< ...

  9. R语言使用单个向量创建矩阵数据、通过byrow参数指定从向量转化为矩阵的过程中的数据排布方式

    R语言使用单个向量创建矩阵数据.通过byrow参数指定从向量转化为矩阵的过程中的数据排布方式 目录 R语言使用单个向量创建矩阵数据.通过byrow参数指定从向量转化为矩阵的过程中的数据排布方式 R语言 ...

最新文章

  1. mybatis mysql crud_Mybatis的CRUD操作
  2. Py之pandas:利用where、replace等函数对dataframe格式数据按照条件进行数据替换
  3. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型
  4. vb fso方式访问网络上的共享文件夹_经常遇见的网络故障详细分析及解决方法!...
  5. 使用Blazor开发内部后台(一):认识Blazor
  6. P2522 [HAOI2011]Problem b
  7. ZZULIOJ 1061:顺序输出各位数字
  8. java解析csv文件写入mysql_java读取cvs文件并导入数据库
  9. uitextfield 键盘类型_以编程方式更改UITextField键盘类型
  10. 电脑的记事本如何显示行数
  11. 冷峭的 渗透测试入门DVWA教程001:环境搭建
  12. 常见的计算机音频缩写,音响系统常见英文缩写,你知道几个?
  13. 解决Xcode 13.2 不兼容 ios15.4 问题
  14. PS 颜色表大全-CMYK颜色表(2)
  15. Life's A Struggle
  16. Summation Prove (Intro. to Algo. Open Course Episode 5) in Quick Sort
  17. HTML+JS+websocket 实现联机“游戏王”对战(一)
  18. 7寸显示器 树莓派4b,7寸屏幕
  19. 时间序列平稳性分析和白噪声检验
  20. 2018年终总结——凡是过往,皆为序章

热门文章

  1. 绝境求生(八数码有解无解的问题,求逆序)
  2. 设计模式 之 桥接模式 //依旧是游戏中的例子来解释设计模式
  3. 《Apache服务》
  4. ssh设置socks5代理,curl代理下载及yum配置代理
  5. 重庆地税数据保护系统升级改造项目
  6. 深入理解Java的main方法
  7. 屏中贵族!LED贴膜屏引市场关注 引领市场新潮
  8. 梨花姐姐又出新诗了!!!
  9. Pycharm安装配置详细教程
  10. 信息与计算机科学是学什么的,信息与计算科学:你猜我是学计算?还是计算机?...