2015-12-14 7 views
5

名前を変更するカラムが存在しない場合、dplyrでリネーム機能を使用する巧妙な方法がありますか?dplyrでリネームを使用していてカラムが存在しない場合のエラーを回避する

例えば、私はエラーに

mtcars%>%rename(miles_per_gallon=mpg,missing_varible=foo) 

(これで結果:エラー:不明な変数:FOO)もたらさない次たい

をではなく、すべての可能なリネームしてデータフレームを完了しました。

現在、私は明示的に特定の列は、時にはそれがdplyrに全力を尽くすないし大丈夫だ

おかげ

イアン

+2

存在しない列の名前を変更したいのはなぜですか? – DatamineR

+2

作業しているすべてのオブジェクト(行)に対してすべての属性(列)が存在するわけではありません。これは、私が特定の方法でデータをサブセット化すると、予想よりも少ない列しか持たないデータフレームで終わる可能性があることを意味します。したがって、明示的なチェック – Iain

答えて

5

の名前を変更する前に存在していることを確認しています。これはその時代の一つかもしれません。あなたが鍵を持ってたら、それだけだ、

namekey <- c(mpg="miles_per_gallon", cyl="cylinders", disp="displacement", hp="horse_power", 
      drat="rear_axle_ratio", wt="weight", qsec="quarter_mile_time", vs="v_s", 
      am="transmission", gear="number_of_gears", carb="number_of_carburetors", 
      foo="missing_variable") 

mtcars1 <- mtcars[,1:2] 
mtcars1$foo <- rnorm(nrow(mtcars1)) 

names(mtcars1) <- namekey[names(mtcars1)] 

head(mtcars1) 
#     miles_per_gallon cylinders missing_variable 
# Mazda RX4      21.0   6  -0.9901081 
# Mazda RX4 Wag     21.0   6  0.2338014 
# Datsun 710     22.8   4  -0.3077473 
# Hornet 4 Drive    21.4   6  1.1200518 
# Hornet Sportabout    18.7   8  0.7482842 
# Valiant      18.1   6  0.4206614 

シングル、わかりやすい名前変更を行うコードの行を:私はキーとして動作ベクトルを設定します。

+0

これは問題ありませんが、パラダイム:) –

+0

@ Maxim.K 'dplyr'は基底Rを含むパラダイムです。これは基底R解です。その意味ではまだ1つのパラダイムです。これは 'dplyr'がゲームにもたらすアドオンソリューションのどれにも依存しません。 –

2

plyrパッケージには、warn_missingパラメータのrename()機能があります。

plyr::rename(
    mtcars, 
    replace  = c(mpg="miles_per_gallon", foo="missing_varible"), 
    warn_missing = FALSE 
) 

あなたがそれを使用している場合は、その関数名はdplyr年代と衝突しないように、requireNamespace()instead oflibrary()を使用することを検討してください。

関連する問題