如何更改和分配列表的名称?
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
}
这将生成一个新列表,其中包含名为 foo
、bar
和 baz
的三个项目,每个项目都是 list1
的副本。要访问各个值,您可以使用例如result$foo
或 result[['foo']]
(如果您将值的名称存储在变量中,则后者是必需的,因为通过 $
访问不适用于右侧的变量)。
您可以根据自己的具体目的对其进行调整。请注意,在大多数情况下,循环将被更合适的函数替换。例如,使用 replicate
:
可以更好地完成上述操作
result = setNames(replicate(3L, list1, simplify = FALSE), c('foo', 'bar', 'baz'))
总之,不要动态创建变量。对于此类问题,永远不会 是一个合适的解决方案。相反,它使代码更加复杂和难以理解。为了使代码尽可能简单,变量只能在代码中显式创建(即通过赋值或作为函数参数等)。
如果我这里有这个列表:
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
}
这将生成一个新列表,其中包含名为 foo
、bar
和 baz
的三个项目,每个项目都是 list1
的副本。要访问各个值,您可以使用例如result$foo
或 result[['foo']]
(如果您将值的名称存储在变量中,则后者是必需的,因为通过 $
访问不适用于右侧的变量)。
您可以根据自己的具体目的对其进行调整。请注意,在大多数情况下,循环将被更合适的函数替换。例如,使用 replicate
:
result = setNames(replicate(3L, list1, simplify = FALSE), c('foo', 'bar', 'baz'))
总之,不要动态创建变量。对于此类问题,永远不会 是一个合适的解决方案。相反,它使代码更加复杂和难以理解。为了使代码尽可能简单,变量只能在代码中显式创建(即通过赋值或作为函数参数等)。