【问题标题】:Dynamically turn a data frame column into a variable of the same name [duplicate]动态将数据框列转换为同名变量[重复]
【发布时间】:2021-08-02 10:25:06
【问题描述】:

假设我有一个如下所示的数据框。

dt = data.frame(a = rnorm(5), b = rnorm(5))

我想将一组列变量分配为向量。

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

所以对于向量中的这两列,我想动态地取那一列并创建一个同名的向量。

所以正常的做法是这样做......

a = dt$a

b = dt$b

但我想动态地执行此操作。有什么建议吗?

【问题讨论】:

  • 不要那样做。充其量,这会使接下来的一切变得更加困难。
  • @Roland 你介意详细说明一下吗?
  • @tmfmnk 如果您想使用动态名称创建这些向量,接下来的逻辑步骤包括以编程方式引用它们。这会导致非常麻烦的 get/assign 构造。而且,完全没有必要。引用 data.frame 列,甚至遍历 data.frame 列要容易得多。或者,您也可以只使用固定名称而不是动态名称。没有正当理由在全局环境中使用动态名称创建向量。
  • @Roland 我完全同意你的看法。我只是好奇是否有我不知道的原因。

标签: r


【解决方案1】:

不确定这是否是个好主意,但您可以这样做:

sapply(colvec, function(x) assign(x, dt[, x], envir = .GlobalEnv))

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 2018-03-15
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多