R语言的基本语法不复杂,远远不像Ruby那样一个东西有各种写法,所以学起来很快,写R语言最重要的一点就是,脑子里一定要有向量、矩阵、列表这样的概念。
额外说一句,我听过一句话,判断一个人聪不聪明,就是看他有没有能力把复杂的问题拆散成小部分,然后逐个去完成,最后把整个问题综合起来解决。这句话很适合编程,无论需要写多大的程序,你都只需要把那个问题分散出来,分成一个部分,一个循环,一个判断,一个读取,一个输出……然后一步一步,像乐高积木一样去解决这个问题。
首先介绍一下R语言中的数据结构,主要有Vector, List, matrix, DataFrame, Array, Facter。其中最常用的有DaraFrame, matrix, list, vecter. 个人不太推荐factor,因为factor在做计算的时候,经常会需要做character转换,而如果你忘记做转换了,程序依然会运行,但是结果是错的,因为factor会自动编程某一个数字。
以下部分内容摘自w3cschool.
Vectors 向量
当你想用多个元素创建向量时,你应该使用c()函数,这意味着将元素组合成一个向量。简而言之,向量就是一系列相同属性
的元素的集合。
Vector对应的一个循环函数是sapply,简直就是神器……
# Create a vector.
apple <- c('red','green',"yellow")
print(apple)
# Get the class of the vector.
print(class(apple))
当我们执行上面的代码,它产生以下结果
[1] "red" "green" "yellow"
[1] "character"
Lists 列表
列表是一个R对象,它可以在其中包含许多不同类型的元素,如向量,函数甚至其中的另一个列表。列表非常好用,你可以再一个列表中包含一系列东西,我经常用它构建多维数组(可能不是最好的办法),再加上lapply函数,非常好用。
# Create a list.
list1 <- list(c(2,5,3),21.3,sin)
# Print the list.
print(list1)
[[1]]
[1] 2 5 3
[[2]]
[1] 21.3
[[3]]
function (x) .Primitive("sin")
Matrices 矩阵
矩阵是二维矩形数据集。 它可以使用矩阵函数的向量输入创建。矩阵运算是R胜过其他大部分编程语言的优势,所以矩阵是很常见的一种格式。有时候,人们会分不清矩阵和DataFrame,感觉用起来差不多,但实际上DataFrame应该用来存储数据,而Matrix更适合单纯的运算分析。换言之,最好矩阵中的所有数值,都是一类的元素。不要列与列之间是不同的东西。 Matrix对应的快捷循环函数是apply(),其中你设置第二个参数就可以决定是按行apply还是按列apply。
# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
当我们执行上面的代码,它产生以下结果
[,1] [,2] [,3]
[1,] "a" "a" "b"
[2,] "c" "b"