在 R 中有效地添加和更新向量的 name/values

adding and updating name/values of a vector efficiently in R

我想将 key/value 对附加到矢量:

> myVector<-c()
> myKey<-"keyName"
> myVector<-c(myVector,myKey=10)

结果:

> myVector
myKey
10

但我希望它是:

 > myVector
    keyName
    10

我知道可以这样写代码:

> myVector["keyName"]<-10

但是当 myVector 的大小很大并且要附加的 key/vlaue 对的数量很多时它会花费太多时间 too.because 它在向量中搜索以找到 "keyName" 所以如果它存在,用新值更新它,否则附加一个新的 key/value 对。

另一种选择是

    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