【问题标题】:R friendly way to convert lots of R data frame columns to lots of vectors将大量 R 数据框列转换为大量向量的 R 友好方式
【发布时间】:2016-08-21 03:08:34
【问题描述】:

我查看了这个解决方案:R-friendly way to convert R data.frame column to a vector?

但每个解决方案似乎都涉及手动声明正在创建的向量的名称。

我有一个包含大约 224 个列名的大型数据框。我想分解数据框并将其转换为 224 个不同的向量,这些向量可以保留它们的标签,而无需手动输入它们。有没有办法遍历数据框中的列并生成一个与列同名的向量还是我在做梦?

【问题讨论】:

  • 您为什么认为有必要这样做。 with() 声明不能帮助你吗?如果您提供某种 reproducible example 来准确显示您想要的内容,那将会有所帮助。也许您正在寻找list2env?但通常有更多类似 R 的方式来做事。
  • 现在我们只需要一个eval(parse(text=...)) 的答案来完成R 中最危险的命令的三重奏。
  • 我非常喜欢建议的三个“坏”想法。

标签: r vector dataframe


【解决方案1】:

我认为这是一个坏主意,但这会起作用(使用 mtcars 数据集):

list2env(mtcars, .GlobalEnv)

【讨论】:

  • 谢谢,感谢您为我提供了我自己的死亡工具。我明白为什么有人会担心。
【解决方案2】:

attach 是另一个危险的命令,人们使用它可以直接用他们的名字访问数据框的列。但是,如果您不知道为什么这样做很危险,请不要这样做。

【讨论】:

    【解决方案3】:

    这是另一个坏主意:

    for(i in names(mtcars)) assign(i, mtcars[,i])
    

    【讨论】:

      【解决方案4】:

      只为理查德:

      for (x in names(mtcars))
          eval(parse(text=paste(x, '<- c(', paste(mtcars[[x]], collapse=',') ,')')))
      

      【讨论】:

      • 这简直是优雅的尖叫。
      • 嗯,它在尖叫。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2022-06-27
      相关资源
      最近更新 更多