【问题标题】:rename data frame to rotating variable将数据框重命名为旋转变量
【发布时间】:2014-12-08 10:18:54
【问题描述】:

我的问题与此处的问题 (Rename data frame) 类似,但我正在尝试根据旋转变量名称对其进行重命名。

df2<-data.frame(a=seq(1:5),b=c(1:10), c=c(11:20))
df2$a = c('alpha', 'alpha','alpha', 'beta', 'beta', 'gamma', 'beta','alpha',    'alpha','alpha')

variables<- c('alpha', 'beta', 'gamma')

for (var in variables) {
alpha<- df2
beta<- df2
gamma<- df2
}

我不想用三行来创建名为 alpha、beta、gamma 的 df2 副本,我想要一行来创建 df2 的副本,所以有

var <- df2

在循环内部,并且随着 var 与循环一起旋转,因此在其三个循环通过循环后,当它通过循环时,我将拥有如上的 alpha、beta、gamma。 我的真正目的是我使用相同的数据框,然后对其进行多次计算,然后想在循环中当前使用的变量之后命名生成的数据框。

我知道在 bash 中我会执行 data_${var},它会导致 data_alpha、data_beta、data_gamma,但是在 R 中呢?

有人知道怎么做吗?

谢谢!

【问题讨论】:

  • 不清楚您在这里要做什么。您能否解释或提供来自df2 的所需结果您是否正在寻找类似list2env(split(df2, df2$a), .GlobalEnv) 的内容?这会将df2 拆分为df$a,然后将变量alpha betagamma 分配给全局环境
  • 这就是数据结构存在的原因。将你的数据框放在一个列表中,然后每个数据框的“名称”可以很容易地以编程方式进行操作。
  • 我刚刚意识到我在链接中回答了这个问题。这是我的第一个答案之一,现在回想起来,这不是很好:)

标签: r dataframe rename


【解决方案1】:

这是FAQ 7.21。该答案最重要的部分是它说不要这样做。

最好使用列表并将您的副本分配到列表中:

variables<- c('alpha', 'beta', 'gamma')

mydfs <- list()

for (var in variables) {
  mydfs[[var]] <- df2
}

或仅用于上述:

mydfs <- rep( list(df2), length(variables) )
names(mydfs) <- variables

然后可以使用lapplysapply 或类似函数完成额外的处理。

【讨论】:

  • 赞同不要这样做的建议。
【解决方案2】:

你可以做类似assign(var, df2)的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2012-04-28
    • 2021-10-07
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多