dplyr:没有for循环输出的数据帧列表

时间:2018-06-06 13:55:10

标签: r list for-loop dplyr

以下代码正常。但是,我希望在没有for循环的情况下获得所需的输出。任何想法

library(magrittr)
data("mtcars")

df1 <- mtcars %>% dplyr::filter(mpg > qsec*1/2)
df2 <- mtcars %>% dplyr::filter(mpg > qsec*2/2)

df <- vector("list", 2)

for(i in 1:2){
  df[[i]] <- mtcars %>% dplyr::filter(mpg > qsec*i/2)
}

2 个答案:

答案 0 :(得分:3)

lapply()是替换循环的标准方法:

void func() { ...
}

答案 1 :(得分:2)

如果我们需要listfilter个数据集,我们可以使用map中的purrrtidyverse个包的一部分)

library(tidyverse)
map(1:2, ~ mtcars %>% 
                dplyr::filter(mpg > qsec * .x/2))

要拥有单个数据集,请将map替换为map_df并使用某种标识符,请使用.id

map_df(1:2, ~ mtcars %>% 
                 dplyr::filter(mpg > qsec * .x/2), .id = 'grp')