R 一行中的mutate_if和mutate_at功能
是否可以(1)使用选择帮助程序和(2)检查列的类型以应用函数 例如,这将不起作用-我想将名称不包含“VAL”的所有整数列转换为因子:R 一行中的mutate_if和mutate_at功能,r,dplyr,tidyverse,R,Dplyr,Tidyverse,是否可以(1)使用选择帮助程序和(2)检查列的类型以应用函数 例如,这将不起作用-我想将名称不包含“VAL”的所有整数列转换为因子: dplyr中是否可以使用其他语法?这不完全是一种dplyr方法,但您可以创建满足所需条件的逻辑向量 inds <- (!grepl("VAL", names(dane_usa_nr))) & (sapply(dane_usa_nr, is.integer)) 或lappy dane_usa_nr[inds] <- lapply(dane_us
dplyr中是否可以使用其他语法?这不完全是一种
dplyr
方法,但您可以创建满足所需条件的逻辑向量
inds <- (!grepl("VAL", names(dane_usa_nr))) & (sapply(dane_usa_nr, is.integer))
或lappy
dane_usa_nr[inds] <- lapply(dane_usa_nr[inds], as.factor)
在这种情况下,基本R实现保持不变。试试这个。它将变异所有不包含“VAL”的列。然后检查它是否为整数。如果是,它将使用
作为.factor()
。如果不是,它只返回列
dane_usa_nr%>%
mutate_at(vars(!contains("VAL")), function(x) if (is.integer(x)) as.factor(x) else x)
dane_usa_nr[inds] <- lapply(dane_usa_nr[inds], as.factor)
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)
dane_usa_nr%>%
mutate_at(vars(!contains("VAL")), function(x) if (is.integer(x)) as.factor(x) else x)