以下代码正常。但是,我希望在没有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)
}
答案 0 :(得分:3)
lapply()是替换循环的标准方法:
void func() { ...
}
答案 1 :(得分:2)
如果我们需要list
个filter
个数据集,我们可以使用map
中的purrr
(tidyverse
个包的一部分)
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')