2016-07-05 4 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», как «an an» отличается? – snoram

+1

'^' dtermines начало строки. Только «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

Смежные вопросы