增
> v = c(1,2,3,4)
> v
[1] 1 2 3 4
> class(v)
[1] "numeric"
> v[1]
[1] 1
> v[5]
[1] NA
> v[5]=5
> v
[1] 1 2 3 4 5
>
R语言的索引是从1开始的
当我们访问不存在的索引的时候,他不会报错,而是以NA代替,类似于python里面的None,大家注意比较一下!
在这里,我直接为索引为5的元素赋值,然后打印,即可增加一个元素。
插入多个元素
类似于python的切片语法,但是注意,两端都是闭区间哦。
> v[6:8]=c(6,7,8)
> v
[1] 1 2 3 4 5 6 7 8
> cat(v)
1 2 3 4 5 6 7 8
>
当前向量长度是8,可以在第10个位置进行赋值吗?
让我们来试一下,他是可以的!
> v[10]=10
> v
[1] 1 2 3 4 5 6 7 8 NA 10
由于9的位置,我们没有赋值,所以NA填充。
删
> v
[1] 1 2 3 4 5 6 7 8 NA 10
> v[-9]#与python不一样,‘-’代表删除
[1] 1 2 3 4 5 6 7 8 10
> v#返回的只是副本,所以在这里打印还是存在NA
[1] 1 2 3 4 5 6 7 8 NA 10
> v <- v[-9]#重新赋值
> v#NA被删除成功
[1] 1 2 3 4 5 6 7 8 10
>
多个删除
> v
[1] 1 2 3 4 5 6 7 8 10
> v[-1:-3]#与v[-3:-1]一样的结果,只是删除的顺序不一样
[1] 4 5 6 7 8 10
> v
[1] 1 2 3 4 5 6 7 8 10
> v[-3:-1]
[1] 4 5 6 7 8 10
>
改
> v
[1] 1 2 3 4 5 6 7 8 10
> v= v+1#支持加减乘除矢量化运算
#传统for(1-5) v[i] = c[i] 迭代计算
#矢量化运算效率 > 迭代计算
> v
[1] 2 3 4 5 6 7 8 9 11
> v[1] = 11#修改一个元素
> v
[1] 11 3 4 5 6 7 8 9 11
> v[2:3] <- c(22,33)#修改多个元素
> v
[1] 11 22 33 5 6 7 8 9 11
>
查
> v
[1] 11 22 33 5 6 7 8 9 11
> v[1]#获取一个
[1] 11
> v[1:3]#多个
[1] 11 22 33
下面这个函数很神奇
> v
[1] 11 22 33 5 6 7 8 9 11
T F T F T F T F T
> v[c(T,F)]#逻辑型索引,循环索引
[1] 11 33 6 8 11
>
向量起名字
> vtest =c(a=1,b=2,c=3,d=4)#创建向量并赋名字
> vtest
a b c d
1 2 3 4
> vtest[1:2]#依然支持索引切片
a b
1 2
> vtest['a']
a
1
> vtest['a':'b']#不支持名字切片
Error in "a":"b" : NA/NaN argument
In addition: Warning messages:
1: NAs introduced by coercion
2: NAs introduced by coercion
>
> v1 <- c(1,2,3,4)
> v2 <- c(1,2,3,4)
> v1
[1] 1 2 3 4
> v2
[1] 1 2 3 4
> v1+v2
[1] 2 4 6 8
> v1/v2
[1] 1 1 1 1
> v1*v2
[1] 1 4 9 16
> v1-v2
[1] 0 0 0 0
>
#向量的矢量化操作
常用的小操作
#排序
v = c(1,3,2,4,-1,0,1,3,2,4)
# ?sort 查看帮助文档
sort(v)
# tab
sort(v,decreasing = T)
v = c('b','c','a')
sort(v)
sort(v,decreasing = T)
#查看数据类型
v = 1:5
is.character(v)
is.numeric(v)
特殊值的说明
R语言 :
NA 缺失值 【*】
NAN 无意义数
InF 正无穷
-InF 负无穷
NULL 没有赋值
v = c(NA,NULL,sqrt(-1),1/0,-1/0)
好啦,就分享到这里吧,其他的大家再去查阅。如果有用,点个赞哟,这是我继续写文的动力!!谢谢
网友评论