2016-07-05 10 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") 

と私は、コードの1行か2行ですべての変数にfactor()を適用することができるように

apropos("animal.farm$ani") 

(つまりこの場合は、スタートを試みました"ani"と言うが)これまで運がなかった。

答えて

1

でシンプルなベースR液開始列名を検出するstringrを使用した:

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

"ani"だけでうまくいきました。 "^ ani"はどう違っていますか? – snoram

+1

'^'は文字列の開始を非難します。文字列の終わりまたは中間にあっても、それぞれの出現箇所に「ani」だけが一致します。 – Alex

1

ani

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

ニース、私は基本Rソリューションパッケージを使用する理由はないと思います存在する。 – snoram

関連する問題