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 vector y with 11 entries consisting of two copies of x 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)
 

 

 

posted on 2013-06-25 21:45  andyhe  阅读(1917)  评论(0)    收藏  举报

导航