【发布时间】:2016-06-18 04:08:55
【问题描述】:
我正在尝试向多个数据框添加一个新列,然后用新的数据框替换原始数据框。这就是我创建新数据框的方式:
df1 <- data.frame(X1=c(1,2,3),X2=c(1,2,3))
df2 <- data.frame(X1=c(4,5,6),X2=c(4,5,6))
groups <- list(df1,df2)
groups <- lapply(groups,function(x) cbind(x,X3=x[,1]+x[,2]))
groups
[[1]]
X1 X2 X3
1 1 1 2
2 2 2 4
3 3 3 6
[[2]]
X1 X2 X3
1 4 4 8
2 5 5 10
3 6 6 12
我对新数据框的创建方式感到满意。然后我坚持的是分解我的groups 列表,然后将列表元素保存回它们各自的原始数据框中。
期望的输出
基本上,我想做类似df1,df2 <- groups[[1]],groups[[2]] 的事情,但这当然在语法上是无效的。我有超过 2 个数据框,这就是为什么我希望有一种更编程的方法,而不是简单地输入 N 行代码。
【问题讨论】:
-
在列表中保持 data.frames 具有相同结构在 R 中通常是一个非常好的主意,因为您可以使用
lapply和其他工具来处理它们。有关一些有用的提示,请参阅 gregor 在this question 上的回答。您还可以将名称添加到您的列表项以使其更易于访问:names(groups) <- c("df1", "df2")。 -
谢谢你,这是一个非常有用的线程。我将尝试实施这种方法。如果有人仍然愿意回答,我仍然对我最初的问题感到好奇。
标签: r