赋值

R中最简单的数据结构是由一串有序数值构成的数值向量。例如要创建包含三个数值的向量,可以:

1)      x<-c(1,2,3)
2)      x=c(1,2,3)
3)      assign(“x”,c(1,2,3))
4)      c(1,2,3)->x

y<-c(x,1/x)创建包含7个数值的向量y,包含x的拷贝、中间的0、x中数值的倒数。

      

       向量运算

       1)在算术表达式中使用向量将会对该向量的每一个元素都进行同样算术运算。如果运算的两个向量长度不一致(较长的向量必需是较短向量的整数倍),否则会报错。

       例如:v<- 2*x+y+1

       因为x有3个元素,y有6个元素。所以在进行运算的时候x会重复两次(=y/x)。

       2)基本的算术运算符就是常用的+,-,*,/和幂运算^。以及常用的数学函数log,exp,sin,cos,tan,sqrt,max,min,length,sum,prod(x)(得到乘积),mean,var(方差),std(标准差),sort(x)得到升序排序的向量。

 

  产生常用数列

  1)1:30óc(1,2,3,…,30)

  在R中:(冒号)的优先级最高,因此2*1:15等价于c(2,4,6,…,30)

  2)产生逆向数列30:1

 

  3)函数seq:生成数列最常用的工具。

       基本用法:

1、seq(30)óseq(1,30)óseq(1:30)óc(1:30)
2、seq(2:30)óc(2:30)ó2:30
3、seq(from,to,by,length.out,along.with)

 From:数列的第一个数。

 To:数列的最后一个数。

 By:数列步增的长度。

 Length.out:数列的总长度。

 Along.with:赋的是另一个数列,意思是构造和另一个数列一样长度的数列。

例如:y=c(1:3),x=seq(from=1,to=8,along.with=y) 这样就构造和y一样长度的数列x。

  4)函数rep:重复一个对象。

  S=rep(y,times=3):把y重复3次s=(1,2,3,1,2,3,1,2,3)

  S=rep(y,each=3):把y的每个元素重复3次s=(1,1,1,2,2,2,3,3,3)

  S=rep(y,length.out=5):把y的元素重复直到数列达到length.out,这时s=(1,2,3,1,2)

 

4)逻辑向量

逻辑向量可以被赋值的有TRUE,FALSE和NA(不可的)。逻辑向量可以由条件式产生 tmp<-x<13

       R的逻辑运算符有>,>=,<,<=以及判断严格相等的==和判断不等的!=。若C1和C2是逻辑不等式,那么C1&C2是交集,C1|C2是并集,!C1是C1的非运算。

5)缺损值(NA)

       当一个元素或值在统计的时候“不可得到”或者值丢失,在相应的位置上会被保留一个特定的值NA.任何数与NA运算得到的值都是NA.

       Z<-c(1:3,NA)

       Is.na(z)得到一个与z同等长度的向量,它的元素为TRUE当且仅当z中对应的元素是NA.

6)字符向量

函数paste()可以有任意多的参数,并且把他们一个接一个的连到一起。这些参数中的任何数字都将被强制的转换成字符串,并且以相同的方式在终端显示。

paste(1:12) # same as as.character(1:12)(”1”,”2”,…)
paste("A", 1:6, sep = "")#(“A1”,”A2”…)
paste("Today is", date())

 

7)索引向量:选择修改数据集的子集

       索引向量:出现在[]中的向量。

       通过在[]加入索引向量,得到结果向量的子向量。

       (1)逻辑向量。这种情况下,索引向量必须和被挑选元素的向量长度一致。向量中对应索引向量元素为TRUE的元素,将被选中,而为FALSE的将不会被选中。

       例如:y<-x[!is.na(x)] #x中如果包含NA的值将不会被选中。

       所以y的长度可能小于x.

       (2)正整数向量:索引向量必需是{1,2,3,…,length(x)}的子向量。

       X[1:10]选择x的前10个元素。

       C(“x”,”y”)[rep(c(1,1,1,2),times=4)]”x”,”x”,”x”,”y”重复4次,[]里面的c(1,1,1,2)中的1表示外面c中第一个元素,2表示外面c中的第二个元素,所以达到上面的效果。

       (3)负整数向量:这种索引向量指定被排除的元素而不是包括进来。因此

Y<-x[-(1:5)]将x除开始的5个元素外的其它元素赋给y。

       (4)字符串向量:每个向量的子向量的索引向量都是字符串。

   

Fruit<-c(1,2,3,4)
       Names(fruit)<-c(“x”,”y”,”z”,”o”)
       Lunch<-fruit[c(“x”,”z”]
       Lunch

       显示1,3

名字索引的好处是相比数值索引比较容易记忆。