【问题标题】:How to create many objects from a character vector: the object names as the vector element names, and the object values as the vector element values如何从字符向量创建多个对象:对象名称作为向量元素名称,对象值作为向量元素值
【发布时间】:2014-08-19 08:38:55
【问题描述】:

想象一下我们有:

X <- 1:4
names(X) <- c("A" ,"B" , "C", "D")

我想在全局环境中创建四个对象,A、B、C、D,每个对象都有对应的值 1、2、3、4。我假设解决方案涉及分配和应用功能,但希望有人在这里可以想出比我更好的东西。

(上下文:我想创建一种伪 make 文件,基于命名字符向量,其中名称是我要创建的对象的名称,值是名称和位置csv 文件,我想用...填充每个对象...上面的玩具示例是朝着这个方向迈出的一步。)

【问题讨论】:

  • 最好把所有东西都放在一个列表中。 this 的某些版本应该是更好的选择。
  • 谢谢。我一般同意列表,但认为这可能是一个例外。我想创建一个半 makefile 脚本,它将获取并准备一些数据帧以供进一步分析,但当然我不会确切知道最终将使用多少数据集,所以不想要名称和数量开始时要硬编码的数据帧。
  • 嗯,通常你将所有文件放在一个目录中,然后使用lapply 与list.files 和read.csv。我看不出你的用例是个例外。

标签: r vector assign


【解决方案1】:

试试这样:

for(i in seq_along(x)){
     assign(names(x)[i],x[i])
}

【讨论】:

    【解决方案2】:

    您可以使用list2env:

    list2env(as.list(X),.GlobalEnv)
    

    当然,正如评论中提到的那样,使用单独的全局变量并弄乱全局环境并不是一个好习惯。 R 方式是将变量保存在列表或向量中,并使用xxapply 系列函数来操作每个向量元素。

    【讨论】:

    • +1 但我们应该提到,全球环境不应该杂乱无章。
    猜你喜欢
    • 2021-06-02
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多