Basic Building Blocks
R可以作为一个交互式计算器,在R的控制台里输入算术表达式, R会计算出它的结果。
> 5+7
[1] 12
> 5+7*10
[1] 75
我们可以将表达式的值临时保存在一个变量里,这称之为赋值,在R编程语言里是通过符号<-
来进行赋值的。已赋值的变量可以在其它表达式中使用。可以通过在控制台输入变量名来知晓当前变量存储的值是什么。一个变量可以进行多次赋值,但变量代表的值也会因此改变。
> x <- 5 + 7
> x
[1] 12
> y <- x - 2
> y
[1] 10
> x <- y
> x
[1] 10
在R中,任意一个包含/存储数据的对象被称为数据结构,而数值向量(vector)是最简单的一种数据结构。函数c()
用于创造一个向量,其中'c'表示'combine', 表示将函数的传入参数组合而构成一个向量(vector)c()
的传入参数也可以是一个向量。
> z <- c(1.1, 9, 3.14)
> z
[1] 1.10 9.00 3.14
> c(z, 555, z)
[1] 1.10 9.00 3.14 555.00 1.10 9.00 3.14
向量中元素数量被称为长度,比如c(1,2,1)
的长度为3。向量之间也可以进行算术运算。
如果两个向量的长度相同,则向量之间对应的元素进行算术运算,然后运算结果组成新的向量。
> c(1,2,3) + c(1,1,1)
[1] 2 3 4
> c(1,2,3) * c(1,2,3)
[1] 1 4 9
对于不同长度的向量运算,则是把长度短的向量进行循环补齐。然后进行运算。若两个向量的长度不成倍数关系的话,R会给出警告。
> c(1,2,3,4) + c(0,10) # c(1,2,3,4) + c(0,10,0,10)
[1] 1 12 3 14
> c(1,2,3,4) + c(0,10,100) # c(1,2,3,4)+c(0,10,100,0)
[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
若向量与常数之间进行算术运算,向量中的每个元素都将与常数进行运算,然后结果组合成新的向量。若是仅对向量自身进行数学运算操作,如进行求绝对值(abs),求sin值等,也是对向量中的每个元素都进行运算操作。
> sin(c(10, 20 ,30))
[1] -0.5440211 0.9129453 -0.9880316
> c(1, 2, 3) * 2
[1] 2 4 6
> abs(c(-1, 5, -10))
[1] 1 5 10
> sqrt(abs(c(-1, 5, -10)) - 1)
[1] 0 2 3
实际上,对于单个数值,我们也可以将其看作一个长度为1的向量。
> c(1, 2, 3) + 1 # c(1, 2, 3) + c(1, 1, 1)
[1] 2 3 4
有用的技巧
在R里是内置许多函数帮助文档的,可以通过?
命令进行查询,使用方法是?+函数名
。比如要查询函数c()
的帮助文档,在控制台输入?c
后回车后,就会返回c()
的帮助文档。
在控制台或终端,点击按键上箭头↑
,可以循环返回之前运行的命令。这在需要重复执行先前的命令,或想修改之前命令时,很方便。
使用Tab
可以补全函数名或变量名,在输入前两三个字母时,使用Tab
可以将剩余字母补全,或者给出符合条件的名字。这也是非常有用的一个功能,节省输入时间,帮助记忆名字,提高编程速度。