对数据列表中的多个列执行操作

Performing an operation on multiple columns in a list of data

假设我在列表中有以下数据框:

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 对列表中的多个列执行操作?

我们可以使用 transformlapply

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)