2016-06-16 11 views
1

私は、それぞれのフィールドを考慮せずに、因子に変換したい多くのデータフレーム列を持っています。列名をどのように反復することができますか?一致するものがあれば正規表現でそれらを要素に変換しますか?私は、Pythonの世界から来ています、と私はまだループを理解していないと、文字列の置換R.R因子すべての列に文字列が含まれています

擬似コード:おそらく

for name in df.columns.names: 
     if name matches "regex": 
      df$name <- factor(df$name) 
+0

'DF = lapply(DF、関数(x)の場合(is.character(x))をリターン(因子(x))を他のリターン(X))を'使用することができます。 – Gregor

+1

しかし、これらの変更を行う最良の場所は、データを読み込むときです。あなたがデータを読み込んでいるものの列クラス引数を参照してください。 – Gregor

+0

'ライブラリー(dplyr); – alistaire

答えて

1

df[ , grepl('regex' , names(df)) ] <- 
            lapply(df[ , grepl('regex' , names(df)) ], factor) 

もでgrepを使用することができますこの場合。 j引数が[[<-の場合は、論理引数または数値引数を使用できます。

+1

'grepl(...)'を 'idx'などに保存しておけば、よりクリーンな文を書くことができます'df [idx] < - lapply(df [idx]、factor)' – thelatemail

+0

@thelatemailのように "idx"の意味を理解できません。 grepなしで正規表現チェックはどこで行われますか? –

+0

@erics - 'idx < - grepl( 'regex'、names(df))' - 最初に実行するので、コードを2回繰り返す必要はありません。 – thelatemail

0

我々はtype.convert

df[] <- lapply(df, function(x) type.convert(as.character(x))) 
関連する問題