R - Использовать функцию выброса в списке фреймов данных - PullRequest
1 голос
/ 04 июня 2019

Я сделал функцию выброса и хотел бы применить ее к списку фреймов данных. Пока безуспешно. Это работа для счастья или счастья?

# Remove outliers
outlier <- function(x) {
  x[x < quantile(x,0.25) - 6 * IQR(x) | x > quantile(x,0.75) + 6 * IQR(x)] <- NA
  x
}

1 Ответ

3 голосов
/ 04 июня 2019

Мы можем использовать lapply для циклического перебора list из data.frame, затем функция применяется к каждому столбцу, циклически перебирая столбцы (lapply) и назначая выход обратно

lapply(lst1, function(x) {x[] <- lapply(x, outlier)
                     x })

Если столбцы смешанного типа, мы выбираем числовые столбцы и применяем функцию

lapply(lst1, function(x) {i1 <- sapply(x, is.numeric)
             x[i1] <- lapply(x[i1], outlier)
             x
      })

Или используя tidyverse

library(tidyverse)
map(lst1 ~ .x %>%
             mutate_if(is.numeric, outlier))
...