假设我在列表中有以下数据框:
df1 <- data.frame(x = runif(3), y = runif(3))
df2 <- data.frame(x = runif(3), y = runif(3))
df.list <- list(df1, df2)
现在假设我想添加列x和y来获取列z 我知道在数据框中执行此操作,mutate就像以下一样简单:
dplyr::mutate(lapply(df.list, z = x + y))
如何使用lapply对列表中的多个列执行操作?
答案 0 :(得分:5)
我们可以将transform
与lapply
lapply(df.list, transform, z= x+y)
如果我们需要为多列执行此操作,
lapply(df.list, transform, z= x+y, w= x*y)
另一种选择是使用library(purr)
(来自dplyr
的作者)
library(dplyr)
library(purrr)
df.list %>%
map(mutate, z=x+y, w= z*y)