R語言向量下標(biāo)操作
向量下標(biāo)即元素在向量中的位置,在實(shí)踐中我們可以利用下標(biāo)(元素的位置)來找出自己想要的數(shù)。
利用runif函數(shù)生成包含10個(gè)正整數(shù)的向量x。
options(digits = 1) set.seed(1234) x <- runif(10,min = 1,max = 20) x [1] 3 13 13 13 17 13 1 5 14 11
正整數(shù)下標(biāo)
我們可以輸入正整數(shù)作為下標(biāo)來找出對應(yīng)位置的元素。
在[]內(nèi)輸入下標(biāo)。
#向量x的第一位置的元素 x[1] [1] 3 #向量x的第2位置的元素 x[2] [1] 13 x[0] numeric(0)
與其他編程語言不一樣(下標(biāo)從0開始算起),R的下標(biāo)是從1開始算起。
在R語言中向量輸入0下標(biāo)返回numeric(0)。
如果在其他語言,如python中輸入下標(biāo)0,則返回向量中第一個(gè)位置的元素
負(fù)整數(shù)下標(biāo)
如果為負(fù)整數(shù)則表示刪除這個(gè)位置的元素,并返回余下的元素。
x [1] 3 13 13 13 17 13 1 5 14 11 #刪除第一位的元素 x[-1] [1] 13 13 13 17 13 1 5 14 11
倒數(shù)位置選取元素
如果是以倒數(shù)位置選取元素。倒數(shù)第一位置借助length函數(shù)表示下標(biāo),倒數(shù)第二三等等依次遞減。
set.seed(1234) x <- runif(10,min = 1,max = 20) x [1] 3 13 13 13 17 13 1 5 14 11 # 倒數(shù)第一位元素 x[length(x)] [1] 11 # 倒數(shù)第二位元素 x[length(x)-1] [1] 14
下標(biāo)賦值
可以根據(jù)下標(biāo)位置來進(jìn)行賦值
x [1] 3 13 13 13 17 13 1 5 14 11 #將第一位置賦值為8 x[1] <- 8 x [1] 8 13 13 13 17 13 1 5 14 11
下標(biāo)超界
下標(biāo)超界即向量x的長度為n,它的最大下標(biāo)即是n,如果超過n,則超界。
在R中向量下標(biāo)超界則返回NA空白值。如果對這個(gè)下標(biāo)位置賦值,則生成對應(yīng)位置的元素
length(x) [1] 10 x[11] NA x[11] <- 15 x [1] 3 13 13 13 17 13 1 5 14 11 15
邏輯下標(biāo)
可以以邏輯表達(dá)式作為下標(biāo),返回對應(yīng)的元素。
set.seed(1234) x <- runif(10,min = 1,max = 20) x [1] 3 13 13 13 17 13 1 5 14 11 #找出數(shù)值大于10的元素 x[x > 10] [1] 13 13 13 17 13 14 11
which函數(shù)、seq函數(shù)
which函數(shù)找出對應(yīng)元素的下標(biāo)
x [1] 3 13 13 13 17 13 1 5 14 11 #找出取值大于13的元素的位置下標(biāo) which(x>13) [1] 5 6 9
seq函數(shù)也可以返回下標(biāo)
seq(along=x)[x>13] [1] 5 6 9 seq_along(x)[x>13] [1] 5 6 9 seq(along.with=x)[x>13] [1] 5 6 9
可以在for循環(huán)中用seq_along(x)代替1:length(x)
for (i in seq_along(x)) {
print(x[i])
}
for (i in 1:length(x)) {
print(x[i])
}
which.min與which.max可以分別找出向量中最小值與最大值的下標(biāo)位置
x [1] 3 13 13 13 17 13 1 5 14 11 which.min(x) [1] 7 which.max(x) [1] 5
返回NA的下標(biāo)
a <- c(NA,1,NA,23,45,NA) which(is.na(a)) [1] 1 3 6
補(bǔ)充:R語言中的向量使用合集
看代碼吧~
#---r中向量相關(guān)的操作
#----數(shù)字型向量
#賦值
x<-c(1,2,3)
assign("x",c(1,2,3))
y<-c(x,2,x)
# > y
# [1] 1 2 3 2 1 2 3
#向量的運(yùn)算
x<-c(1,2,3);y<-c(2,3,4)
v1<-2*x+x*y+1
# > v1
# [1] 5 11 19
v2<-2*x+x*y+c(1,1,1)
v1==v2
# > v1==v2 兩者效果相同,自己體會
# [1] TRUE TRUE TRUE
x^2
# > x^2
# [1] 1 4 9
#函數(shù)運(yùn)算,比如log,sqrt,sin等
x<-c(1,2,3)
sqrt(x)
# > sqrt(x)
# [1] 1.000000 1.414214 1.732051
#與向量相關(guān)的其他函數(shù)min、max、range、which.min、which.max、sum、prod、length、sort、mean、var
x<-c(3,2,1)
# > min(x)
# [1] 1
# > max(x)
# [1] 3
# > which.max(x)
# [1] 1
# > which.min(x)
# [1] 3
# > sum(x)
# [1] 6
# > prod(x)
# [1] 6
# > length(x)
# [1] 3
# > sort(x)
# [1] 1 2 3
# > mean(x)
# [1] 2
# > var(x)
# [1] 1
#等差數(shù)列一般采用a:b的形式
# > 1:15 代表從1到15的數(shù)列,每次加1
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# > 1:4.5 a為整數(shù),b為實(shí)數(shù),表示a到b的整數(shù)部分,每次加1
# [1] 1 2 3 4
# > 1.5:5 a為實(shí)數(shù),b為整數(shù),表示從a開始累加到b,每次加1
# [1] 1.5 2.5 3.5 4.5
# > 2*(1:5)
# [1] 2 4 6 8 10
# > 2*1:5 向量優(yōu)先級大于運(yùn)算符號
# [1] 2 4 6 8 10
# > 1:5-1
# [1] 0 1 2 3 4
#重復(fù)函數(shù) rep(x,times=)
x<-c(1,2,3)
s<-rep(x,times=2)
# > s
# [1] 1 2 3 1 2 3
#邏輯向量,在向量賦值處使用邏輯表達(dá)式
x<-c(1,2,3,4,5)
l<-x>3
# > l
# [1] FALSE FALSE FALSE TRUE TRUE
#其它的邏輯向量運(yùn)算還有< <= == !=等
#all和any用于返回向量中的值是否全部大于3的邏輯值,any返回向量x中是否有值大于3
all(x>3)
any(x>3)
#邏輯向量的賦值,可以使用F和T對false和true進(jìn)行簡寫
l<-c(TRUE,FALSE,F,T)
#向量中的缺失數(shù)據(jù)、賦值、檢查
z<-c(-1,1:3,NA)
z
# [1] -1 1 2 3 NA
is.na(z)
z[is.na(z)]<-0
# > z
# [1] -1 1 2 3 0
#結(jié)合z的下標(biāo)進(jìn)行復(fù)雜運(yùn)算
z
# [1] -1 1 2 3 0
#結(jié)合z的下標(biāo)進(jìn)行復(fù)雜運(yùn)算
(z+1)[!is.na(z)&z>0]
# [1] 2 3 4
#-----字符型向量
#涉及賦值、paste連接
X<-c("My","Job")
paste("My","Job") #表示將兩個(gè)字符鏈接,默認(rèn)使用空格進(jìn)行分隔開
# [1] "My Job"
paste("X",1:6,sep = "")
# [1] "X1" "X2" "X3" "X4" "X5" "X6"
#可以使用定義下標(biāo)值的方法來定義分段函數(shù)
#比如分段函數(shù) y=1-x x<0 y=1+x x>=0
y[x<0]<-1-x[x<0]
y[x>=0]<-1+x[x>=0]
#下標(biāo)的正整數(shù)運(yùn)算
v<-10:20
v[c(1,2,3,4)]
c("a","b","c")[rep(c(2,1,3),times=3)]
#下標(biāo)的負(fù)整數(shù)運(yùn)算
v[-(1:5)]
#表示去除代號為哪些的值
#取字符向量的某些下標(biāo)值
#在定義向量的時(shí)候可以加上列名
ages<-c(Li=23,chen=30)
#向量名稱可以后加
ages=c(23,40,50)
names(ages)<-c("li","chen","zhang")
ages
# > ages
# li chen zhang
# 23 40 50
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言數(shù)據(jù)結(jié)構(gòu)之矩陣、數(shù)組與數(shù)據(jù)框詳解
進(jìn)行數(shù)據(jù)分析的第一步是先拿到數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于R語言數(shù)據(jù)結(jié)構(gòu)之矩陣、數(shù)組與數(shù)據(jù)框的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
R語言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法
這篇文章主要介紹了R語言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
R語言繪圖數(shù)據(jù)可視化Ridgeline plot山脊圖畫法
這篇文章主要為大家介紹了R語言繪圖數(shù)據(jù)可視化Ridgeline plot山脊圖畫法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
R語言模擬疫情傳播圖RVirusBroadcast展示疫情數(shù)據(jù)
本文用RVirusBroadcast展示模擬的疫情數(shù)據(jù),讓R語言模擬疫情傳播圖來告訴你為什么還不到出門的時(shí)候,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
R語言關(guān)于泊松回歸知識點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于R語言關(guān)于泊松回歸知識點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05
R語言可視化開發(fā)forestplot根據(jù)分組設(shè)置不同顏色
這篇文章主要為大家介紹了R語言可視化開發(fā)使用forestplot根據(jù)分組設(shè)置不同顏色的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

