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

时间:2016-01-14 19:13:34

标签: 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)

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

dplyr::mutate(lapply(df.list, z = x + y))

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

1 个答案:

答案 0 :(得分:5)

我们可以将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)