如何在不创建一堆新元素的情况下分配给R中的列表?
如果我说如何在不创建一堆新元素的情况下分配给R中的列表?,r,R,如果我说l=list(),然后我说l[[27]]=100,它将创建另外26个值为NULL的条目。有没有办法避免这种情况 例如,如果我运行:l使用字符值作为索引: 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您可以将以下内容附加到列表中: l <- list(); for (i in c(4,7,1)) {
l=list()
,然后我说l[[27]]=100
,它将创建另外26个值为NULL
的条目。有没有办法避免这种情况
例如,如果我运行:
l使用字符值作为索引:
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您可以将以下内容附加到列表中:
l <- list(); for (i in c(4,7,1)) { l <- append(l, i^1) }
l我将避免for
循环,并使用lappy
:
> x <- c(4, 7, 1)
> setNames(lapply(x, `^`, 1), x)
$`4`
[1] 4
$`7`
[1] 7
$`1`
[1] 1
>x个集合名(lappy(x,`^`,1),x)
$`4`
[1] 4
$`7`
[1] 7
$`1`
[1] 1
Josh评论说您也可以使用setNames(as.list(x^1),x)
。是的,这在这里行得通,值得一提,谢谢。我的问题更一般,因为可以应用非矢量化函数。同意,这就是我删除我的问题的原因:我意识到你在处理更一般的情况!