[英]adding and updating name/values of a vector efficiently in R
我想將鍵/值對附加到向量:
> myVector<-c()
> myKey<-"keyName"
> myVector<-c(myVector,myKey=10)
結果:
> myVector
myKey
10
但我希望是:
> myVector
keyName
10
我知道可以這樣編寫代碼:
> myVector["keyName"]<-10
但是,當myVector較大且要附加的鍵/ vlaue對的數目也很多時,這會花費太多時間。因為它會在向量中搜索以找到“ keyName”,因此如果存在,請使用新值對其進行更新,否則將添加新值鍵/值對。
一個替代方案是
myVector<-c()
myKey<-"keyName"
myVector<-c(myVector,10)
names(myVector)[length(myVector)] = myKey
當然有比這更好的方法,但是它確實起作用,並且在命名元素時阻止搜索大向量。
myVector<-c()
myKey<-"keyName"
new <- c( dummyKey = 10 )
names( new ) <- myKey
myVector<-c(myVector,new)
我還要補充一點,例如,在填充之前預先分配向量(與在每個步驟中添加相反)可能會極大地縮短您的處理時間(例如,最好在不使用循環的情況下執行此操作,但這希望可以使您的想法得到理解) ):
N = 20
myVector <- c( mode = "numeric", length = N )
myVector.names <- c( mode = "character", length = N )
for( i in seq_len( N ) ) {
myVector[i] <- rnorm( 1 ) # replace with a reference to your value
myVector.names[i] <- letters[ i ] # replace with a reference to your key
}
names( myVector ) <- myVector.names
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.