Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 一行中的mutate_if和mutate_at功能_R_Dplyr_Tidyverse - Fatal编程技术网

R 一行中的mutate_if和mutate_at功能

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

是否可以(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_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)