从矢量值中命名对象

时间:2017-12-14 01:41:30

标签: r object naming

我正在尝试使用向量的字符值来命名新对象,然后将这些新对象转换为新的矩阵。所以,如果我有以下向量:

Named <- c("a", "b", "c")

我希望有一个循环来创建名为“a”,“b”和“c”的对象

for(i in 1:length(Named)){
Named[i] <- matrix(0L, nrow = 3, ncol = 3)
}

我意识到此代码当前将数据输入到向量中。如何在Named [i]中提取字符以用作新对象的名称?

这样循环就像编写这段代码一样:

a <- matrix(0L, nrow = 3, ncol = 3)
b <- matrix(0L, nrow = 3, ncol = 3)
c <- matrix(0L, nrow = 3, ncol = 3)

1 个答案:

答案 0 :(得分:1)

1)分配通常,人们希望将值分配到列表中,但是如果必须将它们分配到全局环境中,那么这是for循环的一个很好的应用程序:< / p>

for(nm in Named) assign(nm, matrix(0L, 3, 3), .GlobalEnv)

如果您已在全局环境级别执行此操作,则可以选择省略assign的最后一个参数。

2)索引全局环境这也可以:

for(nm in Named) .GlobalEnv[[nm]] <- matrix(0L, 3, 3)

3)list2env 另一种方法是创建一个列表,然后使用list2env将其组件复制到全局环境。

list2env( Map(function(x) matrix(0L, 3, 3), Named), .GlobalEnv )

4)硬编码请注意,如果您只需要分配一些元素,并且不需要通过Named这样的变量进行参数化,那么您只需要硬编码它是这样的:

a <- b <- c <- matrix(0L, 3, 3)

5)列表如果你最终决定在全球环境中创建一个列表而不是对象,那么:

L <- Map(function(x) matrix(0L, 3, 3), Named)