增
> 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開始的
當(dāng)我們訪問不存在的索引的時候旱捧,他不會報錯愕够,而是以NA代替过咬,類似于python里面的None,大家注意比較一下浦箱!
在這里吸耿,我直接為索引為5的元素賦值祠锣,然后打印,即可增加一個元素咽安。
插入多個元素
類似于python的切片語法伴网,但是注意,兩端都是閉區(qū)間哦妆棒。
> 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
>
當(dāng)前向量長度是8澡腾,可以在第10個位置進(jìn)行賦值嗎?
讓我們來試一下糕珊,他是可以的动分!
> 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]一樣的結(jié)果坟乾,只是刪除的順序不一樣
[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#支持加減乘除矢量化運算
#傳統(tǒng)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
下面這個函數(shù)很神奇
> v
[1] 11 22 33 5 6 7 8 9 11
T F T F T F T F T
> v[c(T,F)]#邏輯型索引,循環(huán)索引
[1] 11 33 6 8 11
>
向量起名字
> vtest =c(a=1,b=2,c=3,d=4)#創(chuàng)建向量并賦名字
> 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)
#查看數(shù)據(jù)類型
v = 1:5
is.character(v)
is.numeric(v)
特殊值的說明
R語言 :
NA 缺失值 【*】
NAN 無意義數(shù)
InF 正無窮
-InF 負(fù)無窮
NULL 沒有賦值
v = c(NA,NULL,sqrt(-1),1/0,-1/0)
好啦,就分享到這里吧蝶防,其他的大家再去查閱甚侣。如果有用,點個贊喲慧脱,這是我繼續(xù)寫文的動力C烊蕖!謝謝