绑定许多数据框,添加带有其 id 的列[重复]

2023-11-27

我有许多重复命名的数据框:

df.1 <- data.frame("x"=c(1,2), "y"=2)
df.2 <- data.frame("x"=c(2,4), "y"=4)
df.3 <- data.frame("x"=2, "y"=c(4,5))

所有数据框具有相同的行数和列数。 我想绑定它们,添加一个带有数据框 ID 的列。 id 是源数据框的名称。

我知道我可以手动执行此操作:

rbind(data.frame(id = "df.1", df.1),
      data.frame(id = "df.2", df.2),
      data.frame(id = "df.3", df.3))

但它们的数量很多,而且未来它们的数量还会发生变化。

我尝试编写 for 循环,但它们不起作用。我想这是因为我将它们基于包含数据帧名称的字符串列表,而不是数据帧本身的列表。

df_names <- ls(pattern = "df.\\d+")

for (i in df_names) {
  i$id <- i
  i
}

...但我还没有找到任何自动方法来创建具有可重复名称的数据框列表。即使我这样做了,我也不确定上面的 for 循环是否有效:)


你可以使用parse and eval从中获取数据帧df_names:

do.call(rbind, lapply(df_names, function(x){data.frame(id=x, eval(parse(text=x)))}))


    id x y
1 df.1 1 2
2 df.1 2 2
3 df.2 2 4
4 df.2 4 4
5 df.3 2 4
6 df.3 2 5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定许多数据框,添加带有其 id 的列[重复] 的相关文章

随机推荐