簡體   English   中英

在R中有效地添加和更新向量的名稱/值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM