【发布时间】:2019-07-13 16:46:52
【问题描述】:
我有一个数据框列表 (my.list)
d1 <- data.frame(ref = c(1, 2, 3), y2 = c(4, 5, 6), y3 = c(7, 8, 9), y4 = c(10, 11, 12))
d2 <- data.frame(ref = c(3, 2, 1), y2 = c(6, 5, 4), y3 = c(9, 8, 1))
my.list <- list(d1, d2)
d1
ref y2 y3 y4
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12
现在我想向此列表中的每个数据框添加一些具有绝对差值的列。我将使用以下 for 循环为数据帧 d1 执行此操作
for (i in names(d1)[2:length(names(d1))]){
d1[[paste(i, 'abs_diff', sep="_")]] <- abs(d1[,i]-d1[,2])
}
d1 然后看起来像这样:
ref y2 y3 y4 y2_abs_diff y3_abs_diff y4_abs_diff
1 1 4 7 10 0 3 6
2 2 5 8 11 0 3 6
3 3 6 9 12 0 3 6
但是我现在如何才能一次性为 my.list 的所有数据帧执行此操作?我知道我应该为此使用“lapply”,但我无法让它工作。
【问题讨论】: