我试图将12小时后包含单词"length"的变量的所有值更改为NA.
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, .)))
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个Can't convert a list to function错误
总结已经做出的评论:
mutate_at使用列名称 - 当您可以提供按列名称的特征选择列的条件时,它最有用.这通常采用以下形式:mutate_at(vars(ends_with("length")),funs(...))
mutate_if使用列内容 - 当您可以提供基于列本身内容选择列的谓词函数时,它最有用.这通常采用以下形式:mutate_if(is.integer,funs(...))
但正如Galina所指出的那样,mutate_if是多功能的,可以使用grepl"欺骗"操作列名
| 归档时间: |
|
| 查看次数: |
1508 次 |
| 最近记录: |