R语言学习(二)vector
1、向量的赋值
x <- c(10.4, 5.6, 3.1, 6.4, 21.7) assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7)) c(10.4, 5.6, 3.1, 6.4, 21.7) -> x y <- c(x, 0, x) #1would create a vectory
with 11 entries consisting of two copies ofx
with a zero in
#the middle place.
大多数情况下
“<-” 可以用“=”代替
2、向量的计算
向量也可以参与运算,参与运算的向量不必等长,它们会一个元素一个元素的计算。较短的向量会循环拓长,直到和最长的向量长度相等
v <- 2*x + y + 1
其中 x 会出现2.2次,y出现一次,1出现11次
大多数情况下,用户不必担心向量中的“数字” 是整数,实数甚至复数。内部计算会以双精度实数或者双精度复数完成
3、生成规则序列
(1)、冒号表达式
优先级很高
> n<-10; > 1:n-1; [1] 0 1 2 3 4 5 6 7 8 9
> 1:(n-1);
[1] 1 2 3 4 5 6 7 8 9
(2)、seq()
-seq(-5,5,by=.2) > s3; [1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2 -3.0 -2.8 -2.6 -2.4 [15] -2.2 -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 [29] 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 [43] 3.4 3.6 3.8 4.0 4.2 4.4 4.6 4.8 5.0 > s4<-seq(length=51,from=-5,by=.2) > s4; [1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2 -3.0 -2.8 -2.6 -2.4 [15] -2.2 -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 [29] 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 [43] 3.4 3.6 3.8 4.0 4.2 4.4 4.6 4.8 5.0 > x; Error: object 'x' not found > x<-c(1,2,3) > seq(along=x); [1] 1 2 3 > y<-x(4,5,6); Error: could not find function "x" > y<-c(4,5,6); > seq(along=y); [1] 1 2 3 >
seq(along=vector) 将会产生一个1,2,3,...length(vector)的序列
(3)、rep()
> s5<-rep(x,times=5); > s5; [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 > s6<-rep(x,each=5); > s6; [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 >
4、逻辑向量
逻辑向量的元素可以使(TRUE,FALSE,NA(not available))这三种 其中TRUE可以写成T,FALSE可以写成F
> temp <-x>1; > temp [1] FALSE TRUE TRUE
5、遗漏值
NA
NAN not a number
通常任何在关于NA的操作结果都是NA
> z<-c(1:3,NA); > z; [1] 1 2 3 NA > ind<-is.na(z); > ind; [1] FALSE FALSE FALSE TRUE > x==NA; [1] NA NA NA > 0/0 [1] NaN > is.na(0/0); [1] TRUE > is.nan(NA); [1] FALSE >
6、字符向量
转义方式和c语言相似
比如生成坐标
> labs<-paste(c("X","Y"),1:10,sep=""); > labs; [1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
7、索引,vector取值
索引从1开始
y<-x[-(1:5)] 意思是把出去前5个元素的x序列赋值给y
> fruit<-c(5,10,1,20) > names(fruit)<-c("orange","banana","apple","peach"); > lunch<-fruit[c("apple","orange")]; > lunch; apple orange 1 5 >
> x[is.na(x)] <- 0
替换所有遗漏值为0
y[y < 0] <- -y[y < 0] 等价于 y <- abs(y)