如何在不创建一堆新元素的情况下分配给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)
。是的,这在这里行得通,值得一提,谢谢。我的问题更一般,因为可以应用非矢量化函数。同意,这就是我删除我的问题的原因:我意识到你在处理更一般的情况!