2016-07-05 109 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