2016-07-05 57 views
0

我有几个变量,其名称都以我的数据框架中的相同模式(大约20)开始。 R将它们作为字符读入,但它们应该被格式化为因子。在R中同时变量多个变量的类别

下面我提供了一个可比的(只是小得多)的数据框。

animal.farm <- data.frame(matrix(0, 5, 0)) 
set.seed(1) 
animal.farm$ord.3 <- sample(1:4, 5, replace=T) 
animal.farm$ani.4 <- sample(c("dog", "horse", "mink"), 5, replace=T) 
animal.farm$ani.5 <- sample(c("fun", "boring", "clever"), 5, replace=T) 

我都试过

ls(pattern = "animal.farm$ani") 

apropos("animal.farm$ani") 

,这样我可以申请factor()所有变量与代码的一个或两行(在这种情况下启动与“ani”),但到目前为止没有运气。

回答

1

启动一个简单的基础R解决方案的列名:

id <- grep("^ani", names(animal.farm)) 
animal.farm[id] <- lapply(animal.farm[id], as.factor) 
+0

它只适用于“ani”,“ani”有什么不同? – snoram

+1

'^'确定字符串的开头。只有'“ani”'才会匹配每个事件,即使它会在字符串的末尾或中间。 – Alex

1

使用stringr检测与ani

library(stringr) 
cols <- str_detect(colnames(animal.farm), "^ani") 
animal.farm[,cols] <- lapply(animal.farm[,cols], as.factor) 
+0

不错,但我想没有理由使用包时一个基础R解决方案存在。 – snoram