dplyr: список выводимых фреймов данных без цикла for - PullRequest
0 голосов
/ 06 июня 2018

Следующий код работает нормально.Тем не менее, я хочу получить необходимый вывод без цикла.Любые мысли

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 голосов
/ 06 июня 2018

lapply () - это стандартный способ замены циклов:

df <- lapply(1:2 / 2, function(x) dplyr::filter(mtcars, mpg > qsec*x))
0 голосов
/ 06 июня 2018

Если нам нужен list из filter ed наборов данных, мы можем использовать 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...