gpt4 book ai didi

r - 从矢量值命名对象

转载 作者:行者123 更新时间:2023-12-01 13:26:10 25 4
gpt4 key购买 nike

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

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

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) list 如果最后您决定创建一个列表而不是全局环境中的对象,那么:

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

关于r - 从矢量值命名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com