如果我說l = list()
,然後我做了l[[27]] = 100
,它會創建26個其他值爲NULL
的條目。有沒有辦法避免這種情況?如何在R中分配一個列表而不創建一堆新元素?
例如,如果我運行:l <- list(); for (i in c(4,7,1)) { l[[i]] <- i^1 }
它將創造的條目從1到7,和NULL值的列表中的所有沒分配的。我怎樣才能避免這些虛假的條目?
如果我說l = list()
,然後我做了l[[27]] = 100
,它會創建26個其他值爲NULL
的條目。有沒有辦法避免這種情況?如何在R中分配一個列表而不創建一堆新元素?
例如,如果我運行:l <- list(); for (i in c(4,7,1)) { l[[i]] <- i^1 }
它將創造的條目從1到7,和NULL值的列表中的所有沒分配的。我怎樣才能避免這些虛假的條目?
的指數使用字符值:
l <- list(); for (i in c(4,7,1)) { l[[as.character(i)]] <- i^1 }
> l
$`4`
[1] 4
$`7`
[1] 7
$`1`
[1] 1
你可以添加到列表:
l <- list(); for (i in c(4,7,1)) { l <- append(l, i^1) }
我會避免for
迴路,並使用lapply
:
> x <- c(4, 7, 1)
> setNames(lapply(x, `^`, 1), x)
$`4`
[1] 4
$`7`
[1] 7
$`1`
[1] 1
喬希評論你也可以做'setNames(as.list(x^1),x)'。是的,這會在這裏工作,值得一提的是,謝謝。我的意思是可以應用一個非向量化的函數,所以它更一般。 – flodel 2013-02-10 20:17:40
同意,這就是爲什麼我刪除了我的查詢:我意識到你正在尋找更一般的情況! – 2013-02-10 20:26:47