R - 在数据帧列表上使用离群值函数

R - Use an outlier function on a list of dataframes

我制作了一个离群值函数,并想将其应用于数据帧列表。到目前为止没有成功。这是 lapply 的工作,还是 sapply?

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

我们可以使用 lapply 循环遍历 data.framelist,然后通过遍历列 (lapply) 和将输出分配回去

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

如果列是混合类型,我们select数字列并应用函数

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))