使用 Purrr 将循环转换为函数式编程 - 但仅适用于变量向量

Convert a loop into functional programming using Purrr - but only applying to a vector of variables

我想遍历一个数据框——用中位数替换 NA——但只遍历一个变量向量

此代码有效,但我想让它更具功能性(同时也将其合并到其他 'Tidy' 代码中)。如何将第 2 部分转换为函数式样式并将其与第 1 部分中的表达式链接起来?

ColsMed <- c("V7", "V9", "V10")

for(i in ColsMed){
wvsFSU[is.na(wvsFSU[,i]), i] <- median(wvsFSU[,i], na.rm = TRUE)
}

我正在尝试以下和一些变体。

library(Purrr)
wvsFSU <- map(is.na(wvsFSU), ColsMed, median) 

是循环遍历一部分变量而不是整个数据帧让我感到困惑

您的数据范围很广。带有 gather 的长格式使代码更加动态。这是一个解决方案:

wvsFSU %>% 
  rownames_to_column() %>% 
  gather(k, v, V7, V9, V10) %>% # Enter columns here
  group_by(k) %>% 
  mutate(v = if_else(is.na(v), median(v, na.rm = T), v)) %>% 
  ungroup() %>% 
  spread(k,v) %>% 
  select(-rowname)