不用等号用
获得帮助的三种途径
1) help ? 获得方法的文档解释
2) example 获得方法的样例
3) help.search ?? 模糊搜索,搜寻自己想要的功能,R会返回相关结果
尽管变量的数据类型无需在使用前声明,但在没有声明变量的存储方式之前,直接通过下标的方式对其赋值是会有错误的。比如x[1]
vector会循环。例如,c(1,2,4) + c(2,3,4,5,6) 其中长度略短的c(1,2,4)会“循环”匹配较长的vector长度,被当做c(1,2,4,1,2)来做该加法,因此结果为3 5 8 6 8。
vector的过滤。
1) 对于x=2]返回包涵2、3的vector。
2) 利用subset方法也可以实现过滤,如subset(x,x>5),但与x[x>5]的区别是,subset会剔除NA,而后者则保留。
用args()方法来查看一个函数的参数
x
创建matrix的方式
1) y
2) y
3) m
取子矩阵的几种方式
1) 连续取 z[,2:3]:取z矩阵2、3两列
2) 跳跃取 z[c(1,3),]:取z矩阵1、3两行
3) 剔除取 z[-2,]:剔除z矩阵第2行
apply()方法可以把自定义的function,应用到matrix中的元素上。如果自定义function返回k个元素的vector,那么apply()的结果将包含k行。
通过cbind()和rbind()合并两个vector(matrix)——实际上,所谓“合并”,只是创建了一个新的matrix
从matrix中提取一行或列,被提取的部分会自动成为vector,而不再是matrix。在进行提取的时候,需要指定drop参数为FALSE来保证最终还是matrix。如r
array为matrix提供了额外的维度,使得matrix由二元变为三元。如test
list的创建方式
1) 带tag的方式:j
2) 无tag的方式:j
3) vector的mode参数:z
list中元素的访问:
1) list_name$tag_name
2) list_name[[tag_name]]
3) list_name[[index]]
list中元素的访问需要双层[[]],如果单层[index]或[tag_name]会访问到tag_name(或者index)与值本身,是个子list,而不仅仅是值;而且,双层[[]]中的只能是单一的tag_name或index,不能是类似[[1:3]]这样访问,而单层可以[1:3],提取出1~3作为子list
不像vector在创建之后就无法增加、删除元素,list中的元素是可以动态增减的
list中可以嵌套list
data frame的创建:
kids
ages
d
data frame中元素的创建
1) d[[index]]
2) d$column_name
3) d[,index]:访问第index列
4) d[index,]:访问第index行
5) d[[a:b]]:访问第a列的第b个元素
6) d[a:b]:对data frame提取a列到b列来构成子frame。
factor可以根据vector构建而出,比如
x
xf
当然也可以是字符类型的vector来构建factor
factor中有个level的概念,level代表的是分组的结果。通过levels()方法可以列出factor的所有level
tapply(x,f,g):vector x按照factor f分组,对每个组运算g方法。其中x与f的长度需要一致。对x的分组f计算,可以不只是一个分组方式,比如对收入x算平均值(g = mean),可以根据年龄段f1来算,也可以根据性别f2来算,于是tapply(x,list(f1,f2),mean)。by()与tapply()类似,但其第一个参数可以是matrix或者data frame。
用split(x,f)方法可以对x进行分组,即taplly的第一步。tapply的第一个参数必须是vector,而split还可接受data frame。
sort()与order()二者都可以用来做排序,前者直接返回数据集,后者返回index,而被排序的数据集不会被改变,如
> x
[1] 13 5 2 15 7
> sort(x)
[1] 2 5 7 13 15
> order(x)
[1] 3 2 5 1 4
> x
[1] 13 5 2 15 7
> y
> y
[1] 2 5 7 13 15
rank()方法可以为vector中的元素排名,如
> rank(c(3,7,2,6,3,9))
[1] 2.5 5.0 1.0 4.0 2.5 6.0
union(x,y):求x与y的并集
intersect(x,y):交集
setdiff(x,y):补集(包含于x而不包含于y的元素将被返回)
setequal(x,y):测试集合是否相等
c %in% y:测试c是否属于y集合
choose(n,k):长度为n的集合中,长度为k的子集个数