如何更改和分配列表的名称?

How to change and assign the name of a list?

如果我这里有这个列表:

list1 <- list(2, "hello", c(3, 5, 4))

我有这个:

ff <- "Bar"

我想通过 ff 将列表名称从 "list1" 更改为 "Bar"

请注意,动态更改变量名通常不是一个好主意。出于所有意图和目的,您应该将变量名视为静态的,并与您编写的代码相关联。 (正如@Konrad Rudolph 评论的那样)。例如参见 [​​=12=]

如果你真的要用这个,可以用assign(ff,list1)。这将创建一个名为 Bar 的变量并包含列表

您将为此目的使用(嵌套)列表。在最基本的情况下,这可能如下所示:

results = list()

for (var in c('foo', 'bar', 'baz')) {
    results[[var]] = list1
}

这将生成一个新列表,其中包含名为 foobarbaz 的三个项目,每个项目都是 list1 的副本。要访问各个值,您可以使用例如result$fooresult[['foo']](如果您将值的名称存储在变量中,则后者是必需的,因为通过 $ 访问不适用于右侧的变量)。

您可以根据自己的具体目的对其进行调整。请注意,在大多数情况下,循环将被更合适的函数替换。例如,使用 replicate:

可以更好地完成上述操作
result = setNames(replicate(3L, list1, simplify = FALSE), c('foo', 'bar', 'baz'))

总之,不要动态创建变量。对于此类问题,永远不会 是一个合适的解决方案。相反,它使代码更加复杂和难以理解。为了使代码尽可能简单,变量只能在代码中显式创建(即通过赋值或作为函数参数等)。