在R中的for循环中向列表添加元素

15

我正在尝试在for循环中向列表添加元素。如何设置字段名?

L <- list() 
    for(i in 1:N)
    {
        # Create object Ps...
        string <- paste("element", i, sep="")
        L$get(string) <- Ps
    }

我希望列表的每个元素都具有与i相关的字段名称(例如,第二个元素应该是 "element2")。

如何做到这一点?我认为我的错误是使用了 get 方法。


糟糕,剪切和粘贴出错了!我不想将i设为-1。 - Darko
1个回答

25

看起来你正在寻找以下结构:

N <- 3
x <- list()
for(i in 1:N) {
    Ps <- i  ## where i is whatever your Ps is
    x[[paste0("element", i)]] <- Ps
}
x
# $element1
# [1] 1
#
# $element2
# [1] 2
#
# $element3
# [1] 3

尽管如此,如果您事先了解 N ,那么更好的做法并且更有效率的方法是分配 x 然后填充它,而不是添加到现有列表中。

N <- 3
x <- vector("list", N)
for(i in 1:N) {
    Ps <- i  ## where i is whatever your Ps is
    x[[i]] <- Ps
}
setNames(x, paste0("element", 1:N))
# $element1
# [1] 1
#
# $element2
# [1] 2
#
# $element3
# [1] 3

好的。我会做到。如果N大于900,代码将更加高效。 - Darko
1
@HaddE.Nuff你有任何建议,如果你事先不知道尺寸的情况下。例如,假设大小是随机的。 - rrs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接