有没有简洁的方法来选择特定类型的列dplyr
?例如,如何选择dplyr
链中的所有字符列?
Dplyr 0.5具有select_if()
允许你写的select_if(is.character)
你可以这样做
dt %>% select(which(sapply(.,is.character)))
一种方法是首先获得不同列的类.所以假设我们有一些数据:
library(dplyr) DT <- data.frame(A = letters[1:6], B = c(T,F,F), C = seq(1,2,length.out = 6), D = 1:6) dt <- tbl_df(DT) dt$A <- as.character(dt$A)产量
A B C D (chr) (lgl) (dbl) (int) 1 a TRUE 1.0 1 2 b FALSE 1.2 2 3 c FALSE 1.4 3 4 d TRUE 1.6 4 5 e FALSE 1.8 5 6 f FALSE 2.0 6
我们现在可以使用which函数获取类:
cls <- sapply(dt, class) cls产量
A B C D "character" "logical" "numeric" "integer"
现在很简单:
newDF <- dt %>% select(which(cls=="character")) newDF产量
A (chr) 1 a 2 b 3 c 4 d 5 e 6 f