2016-10-17 7 views
5

によって指定されたmutate_を使用してデータフレームに新しい列を追加します。これは私に次のエラーを与える:は、列名が、私は列が変数名で定義され、私はに列を追加することをデータフレームを、持っている変数

Error: attempt to use zero-length variable name 

私が見てきたmutate_の例の多くを列名を変更するために使用されているが、動的に列を作成していません。どんな助け?

+0

Iエラーはありません。 'SomeName =" "' – Haboryme

+0

という名前の列だけがすべての行を選択して再度実行します。これはテンポラルなようです。 – pluke

+0

実際、2回目は機能しません。 – Haboryme

答えて

3

ステートメントの評価が行われているときに問題があります。私の理解では、mutate_という目標はを使用してmutate(SomeName = "")を作成するなど、mutateの構文を再作成することではありません。代わりに、関数の生成を許可することです。あなたのアプローチが失敗した理由は、それが""という名前の関数を探しているという事実です。

代わりに、評価できる関数を渡す必要があります(ここでは、プレースホルダーとしてpasteを使用しています)、変数を使用してその列の名前を設定します。これは動作するはずです:

df <- df %>% mutate_(.dots = setNames("paste(cut, color)",NewName)) 

が与える:

carat  cut color clarity depth table price  x  y  z SomeName 
    <dbl>  <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>  <chr> 
1 0.23  Ideal  E  SI2 61.5 55 326 3.95 3.98 2.43  Ideal E 
2 0.21 Premium  E  SI1 59.8 61 326 3.89 3.84 2.31 Premium E 
3 0.23  Good  E  VS1 56.9 65 327 4.05 4.07 2.31  Good E 
4 0.29 Premium  I  VS2 62.4 58 334 4.20 4.23 2.63 Premium I 
5 0.31  Good  J  SI2 63.3 58 335 4.34 4.35 2.75  Good J 
6 0.24 Very Good  J VVS2 62.8 57 336 3.94 3.96 2.48 Very Good J 
7 0.24 Very Good  I VVS1 62.3 57 336 3.95 3.98 2.47 Very Good I 
8 0.26 Very Good  H  SI1 61.9 55 337 4.07 4.11 2.53 Very Good H 
9 0.22  Fair  E  VS2 65.1 61 337 3.87 3.78 2.49  Fair E 
10 0.23 Very Good  H  VS1 59.4 61 338 4.00 4.05 2.39 Very Good H 

(注目すべきは、私も持っ

df <- diamonds 
NewName <- "SomeName" 
df <- df %>% mutate_(.dots = setNames("paste('')",NewName)) 

これは、例えば、あなたがcutcolorを貼り付けることができ、より多くの制御を可能とします最初の構文が最初に動作し、それに続く失敗が続く。

関連する問題