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

Soi*_*Guy 1 r list lapply

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

df1 <- data.frame(x = runif(3), y = runif(3))
df2 <- data.frame(x = runif(3), y = runif(3))
df.list <- list(df1, df2)
Run Code Online (Sandbox Code Playgroud)

现在假设我想添加列x和y来获取列z我知道在数据帧中执行此操作,mutate就像这样简单:

dplyr::mutate(lapply(df.list, z = x + y))
Run Code Online (Sandbox Code Playgroud)

如何使用lapply对列表中的多个列执行操作?

akr*_*run 5

我们可以使用transformlapply

lapply(df.list, transform, z= x+y)
Run Code Online (Sandbox Code Playgroud)

如果我们需要为多列执行此操作,

lapply(df.list, transform, z= x+y, w= x*y)
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用library(purr)(来自作者dplyr)

library(dplyr)
library(purrr)
df.list %>% 
      map(mutate, z=x+y, w= z*y)
Run Code Online (Sandbox Code Playgroud)