介绍R中的一些基本模块,所有的命令都可以在R的console里交互式进行。 推荐使用Rstudio进行学习
变量
R最简单的应用,是可以作为交互式的计算器,在console里输入5 + 7然后回车:
> 5 + 7 #输入,R的控制台里输入的前方会有>标志
[1] 12 #输出结果
默认情况下,R仅打印结果12。 但是,R是一种编程语言,通常我们使用一种编程语言而不是计算器的原因是为了使某些过程自动化或避免不必要的重复。
在这种情况下,我们可能需要在第二个计算中使用上面的结果。 不必每次都需要重新键入5 + 7,我们只需创建一个存储结果的新变量即可。
在R中为变量分配值的方式是使用赋值运算符,该运算符只是一个“<”符号,后跟一个“-”。 看起来像这样:<-。就像一个箭头,把箭头右边的值分配给箭头左侧的变量名称。
我们把上面 5 + 7的结果赋值给名称为x的新变量,我们只需要输入:
> x <- 5 + 7
可以看到这次没有直接输出12。因为当我们使用赋值运算符时,R默认我们不希望立即看到结果,而是以后打算将结果用于其他用途。
要查看变量x的内容,只需键入x并按下回车:
> x
[1] 12
现在我们再把 x-3赋值给变量y:
> y <- x - 3
看看y的值是多少?
> y
[1] 9
向量
现在,让我们创建一个小的数字集合,称为向量(vector)。任何包含数据的对象都称为数据结构,而数值向量是R中最简单的数据结构类型。 实际上,即使单个数字也被认为是长度为1的向量。
创建向量的最简单方法是使用c()函数,该函数代表“连接(concatenate)”或“组合(combine)”。 若要创建包含数字1.1、9和3.14的向量,只需要输入c1.1,9,3.14),我们把这个结果保存到变量z。
> z <- c(1.1, 9, 3.14)
[1] 1.10 9.00 3.14
每当我们对特定函数有疑问时,都可以通过?命令访问R的内置帮助文件。例如我们想了解更多关于c()函数的信息,我们可以在控制台输入?c来查看,记住这个时候不需要后面的括号。
> ?c
这个时候,R就会弹出c()函数的帮助文档,如果你使用的是Rstudio,那么帮助文档在右下方的窗口内。
现在回到我们上面的z变量,我们在控制台输入z,会输出什么?
> z
[1] 1.10 9.00 3.14 #没有输入时的逗号了
我们还可以通过组合向量来创建新向量,比如创建一个包含z, 555, z的新向量。这次我们不赋值给新变量,以便立即看到结果。
> c(z, 555, z)
[1] 1.10 9.00 3.14 555.00 1.10 9.00 3.14
算数表达式
数值向量还可以直接用于算术表达式:
> z * 2 + 100
[1] 102.20 118.00 106.28
可以看到R将向量z中的每个元素都乘以2,然后再每个元素加上100。 其他常见的算数运算符包括:
'-'
'/'
'^' #平方
sqrt() #平方根
abs() #绝对值
我们来对z - 1的向量进行取平方根,并赋值给my_sqrt:
> my_sqrt <- sqrt(z - 1)
那么my_sqrt的值是什么呢?
> my_sqrt
[1] 0.3162278 2.8284271 1.4628739
与前面的计算类似,R首先从z的每个元素中减去1,然后取每个元素的平方根。 这样就得到了与原始向量z相同长度的向量。
我们再创建一个新变量my_div,代表z除以my_sqrt的结果。
> my_div <- z / my_sqrt
> my_div
[1] 3.478505 3.181981 2.146460
当给定两个具有相同长度的向量时,R逐个元素简单地执行指定的算术运算。 如果向量的长度不同,R将循环较短的向量,直到其长度与较长的向量相同。
例如上面的z * 2 + 100的例子,z是一个长度为3的向量,而2和100可以看作长度为1的向量。在R里面,实际发生的运算是z * c(2, 2, 2) + c(100, 100, 100) 。
再看一个关于向量循环的例子:
> c(1, 2, 3, 4) + c(0, 10)
[1] 1 12 3 14
第二个向量被R自动循环了。
如果较短的向量无法均匀的划分较长向量的长度,R会在结果中输出一些警告:
> c(1, 2, 3, 4) + c(0, 10, 100)
[1] 1 12 103 4
Warning message:
In c(1, 2, 3, 4) + c(0, 10, 100) :
longer object length is not a multiple of shorter object length
省时小技巧
- 在控制台按
↑方向键,可以看到历史的输入记录 - 如果忘记变量或者函数名,可以使用
Tab键自动补全
本文首发于公众号:柠檬培养师(ID: yantinger90),欢迎关注!
R语言学习-1-Basic Building Blocks









网友评论