R语言笔记-向量操作

1. 向量构成的基本元素为:数值(numeric)、字符(character)、逻辑值(logical)、复数型(complex

 

2. 向量不需要定义类型,可直接赋值:

a<-c(1,2,3,4,5,-3,-4);a #数值型向量

[1] 1 2 3 4 5 -3 -4

b<-c("one","two","three");b #字符型向量

[1] "one" "two" "three"

c<-c(TRUE,TRUE,TRUE,FALSE);c #逻辑型向量

[1] TRUE TRUE TRUE FALSE

x<-c(5,4,2);x

[1] 5 4 2

x[9]<-9;x # 当向量x不够长时,指定第9个元素为9

[1] 5 4 2 NA NA NA NA NA 9 #自动将中间的元素补为NA

 

3. 向量的元素下标取值是以1开始,例如:要前例中取x向量中值为1,则为x[2]

如果一个向量中有一个字符,则该向量的类型会变成字符;

demo_1<-c(1,2,'a')

mode(demo_1)

[1] "character"

 

4. 给向量加名字:

names(years)<-c("Kennedy", "Johnson", "Carter","Clinton");years

Kennedy Johnson  Carter Clinton

1960    1964    1976    1994

 

5. 向量元素的添加及合并

v<-c(1,2,3)

v<-c(v,55) #格式为新向量<-(原向量,新元素)

v

[1] 1 2 3 55

v1 <- c(1, 2, 3)

v2 <- c(4, 5, 6)

c(v1,v2)

[1] 1 2 3 4 5 6

>v<-c(1,2,3,3,3,4)

> append(v,10,after=3) #在第3个向量后面加入10

[1] 1 2 3 10 3 3 4

 

6. 如果逻辑变量与数值在一起,则为转换成数值。TRUE转变成1 and FALSE 转变成 0.

demo_2<-c(1,2,TRUE)

mode(demo_2)[1] "numeric"

demo_2[1] 1 2 1

R语言中没有单一的整数、单一字符的概念

例如:X<-2X<-'a'R都是当作向量来处理,只是这个向量只包括单一值。

 

7. 几种特殊向量的生成

7.1 生成系列seq()

seq(length=, from=, to=)

length:指定生成个数

from:是指开始生成的点

to:截止点

如果不指定,则默认条件下:seq(N1,N2,BY=)

n1:开始位置

n2:截止位置

by=指定间隔

 

seq(length=10,from=10,to=100)

[1]  10  20  30  40  50  60  70  80  90 100

seq(10,100,10)

[1]  10  20  30  40  50  60  70  80  90 100

7.2 rep(PN) 重复生成PN

rep(1,10) [1] 1 1 1 1 1 1 1 1 1 1

 

8. 向量运算

取子向量:通过下标实现

取某个元素:x[2];(如果X包括名称,注意:x[2]x[[2]]的区别;

取某中几个:x[c(1,2,0)]

取某个/几个元素,利用-x[-n]

 

9. 向量排序

sort(); 输出排序后的结果;

order();输出排序后的各个向量位置;

a<-c(3,9,0,12,19)

sort(a)order(a);

a<-c(3,9,0,12,19)

order(a)[1] 3 1 2 4 5

sort(a)[1]  0  3  9 12 19

 

10. 相加。如果二个向量进行运算过程中,二个向量不相同,则R对长度小的向量自动补充值,直到长度等于大的向量。

例如:

Demo_5<-1:3;

Demo_6<-2:5;

 

Demo_7= Demo_6+ Demo_5;

Warning message:

In Demo_6 + Demo_5 :

longer object length is not a multiple of shorter object length

Demo_5<-1:3;

Demo_6<-2:7;

Demo_7= Demo_6+ Demo_5;

Demo_7[1]  3  5  7  6  8 10

 

11. 按条件提取向量的元素

x<-c(10:1);x

[1] 10  9  8  7  6  5  4  3  2  1

x[x==3]<-25;x #x中等于3的元素变为25

[1] 10  9  8  7  6  5  4 25  2  1

x[x=1]<-12;x #x的第1个元素数值变为12

[1] 12  9  8  7  6  5  4 25  2  1

> letters[1:30] # 产生字母序列

[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s""t" "u" "v" "w" "x" "y" "z" NA

[28] NA  NA  NA

> a <- c(2,3,4,2,5,1,6,3,2,5,8,5,7,3);a

[1] 2 3 4 2 5 1 6 3 2 5 8 5 7 3

> which.max(a) # 找出最大元素的下标

[1] 11

> which.min(a) # 找出大小的元素下标

[1] 6

> a[which.max(a)] # 找出最大的元素

[1] 8

> which(a==2) # 等于2的元素的下标

[1] 1 4 9

> a[which(a==2)] # 等于2的元素

[1] 2 2 2

> which(a>5) # 大于5的元素的下标

[1]  7 11 13

> a[which(a>5)] # 大于5的元素

[1] 6 8 7

 

12. 向量的比较

x<-c(1,2,3);y<-c(1,2,3);z<-c(1,2,4);x;y;z

[1] 1 2 3

[1] 1 2 3

[1] 1 2 4

x==y;x==z;y==z #分别比较x,y,z的各个元素

[1] TRUE TRUE TRUE

[1]  TRUE  TRUE FALSE

[1]  TRUE  TRUE FALSE

 

identical(x,y);identical(x,z);identical(z,y) #比较x,y,z的整体

[1] TRUE

[1] FALSE

[1] FALSE

all.equal(x,y) #比较数值型变量是否近似相等

[1] TRUE

all.equal(x,z)

[1] "Mean relative difference: 0.3333333"

all.equal(y,z)

 

[1] "Mean relative difference: 0.3333333"


文章转载自:http://blog.sina.com.cn/s/blog_5de124240101pj1l.html

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值