是否可以(1)使用select助手和(2)检查列的类型来应用函数?
例如,这将不起作用--我想将名称不包含“VAL”的所有整数列转换为因子:
dane_usa_nr%>%
mutate_at(vars(!contains("VAL")) & is.integer , as.factor)是否可以使用dplyr中的其他语法?
发布于 2019-11-16 14:55:35
尝尝这个。它会变异所有不包含"VAL“的列。然后,它将检查它是否为整数。如果是的话,它将使用as.factor()。如果不是,它只会返回列。
dane_usa_nr%>%
mutate_at(vars(!contains("VAL")), function(x) if (is.integer(x)) as.factor(x) else x)发布于 2019-11-16 14:25:14
这并不完全是一种dplyr方法,但是您可以创建一个满足所需条件的逻辑向量。
inds <- (!grepl("VAL", names(dane_usa_nr))) & (sapply(dane_usa_nr, is.integer))然后在mutate_if中使用这个向量
library(dplyr)
dane_usa_nr %>% mutate_if(inds, as.factor)或lapply
dane_usa_nr[inds] <- lapply(dane_usa_nr[inds], as.factor)我们还可以得到索引并在mutate_at中使用
inds <- intersect(grep("VAL", names(dane_usa_nr), invert = TRUE),
which(sapply(dane_usa_nr, is.integer)))
dane_usa_nr %>% mutate_at(inds, as.factor)在这种情况下,基本R实现保持不变。
https://stackoverflow.com/questions/58891493
复制相似问题