我试图在12小时后将包含单词“length”的变量的所有值更改为NA。mutate_if错误:无法将列表转换为函数
df_data <- cbind(
seq(0, 15, by = 0.5),
sample(seq(from = 100, to = 300, by = 10), size = 31, replace = TRUE),
sample(seq(from = 1, to = 100, by = 9), size = 31, replace = TRUE),
sample(seq(from = 50, to = 60, by = 2), size = 31, replace = TRUE),
sample(seq(from = 100, to = 130, by = 1), size = 31, replace = TRUE)
) %>% as.data.frame()
colnames(df_data) <- c("hour", "a", "a_lenght", "b", "b_length")
df_new <- df_data %>%
mutate_if(vars(contains("length")), funs(ifelse(df_data$hour > 12, NA, .)))
但我得到一个Can't convert a list to function
错误
使用'mutate_at'而不是'mutate_if'。你提供了一个'.vars'参数(选择的列表),但是'mutate_if'需要一个'.predicate'函数(求值为TRUE/FALSE) – wici
谢谢,我也可以用'grepl'修改它''mutate_if (grepl(pattern ='length',x = names(df_data)),funs(ifelse(df_data $ hour> 12,NA,。)))' –