2017-01-25 42 views
1

私はを使って、.xlsxのファイルをRに読み込む必要があります。これらのファイルのそれぞれは、最初の列の変数名を与えません。たくさんのファイルがあるので、私はそれらを手動で変更したくありません。dplyrで名前のない変数の名前を変更

データを正しく処理するには、これらの最初の列に名前を付ける必要があります。最後に、これらのファイルのそれぞれに対して(purrr:mapを使用して)呼び出すことができる関数を記述したいと思います。この関数では、ソリューションとして単一のパイプを取得することをお勧めします。

残念ながら、dplyr::rename(df, timeseries = ``)は、次のエラーがスローされます。

Error: attempt to use zero-length variable name

列インデックス(dplyr::rename(df, timeseries = 1))が動作しません使用して、次のいずれか私は名前を変更するためにパイプを中断することを回避するにはどうすればよい

Error: Arguments to rename() must be unquoted variable names. Argument timeseries is not.

変数はnames(df)[1] <- "timeseries"

答えて

2

これは以下のようにdplyr::select()で達成することができる。

select(df, timeseries = 1, everything()) 

明らかに、dplyr::select()この溶液を許可列インデックスを扱うことができます。

dplyr:rename()でこれができない理由が分かっている場合は、ご意見ください。

1

あなたは(この場合は1)renameと列のインデックスを使用したい場合は、チェーンするとき

rename_(df, timeseries = names(df)[1]) 

は、ドットを使用行うことができます。この別のアプローチを示唆ため

df %>% ... %>% rename_(timeseries = names(.)[1]) 
+0

感謝を'(。)[1]'のために読むのが少し難しいと感じます。 –

+0

probsはありません。ちょうど 'rename'でそれを行う方法を強調したいと思いました。 'select'はデータフレームの列を再配置するという副作用があります。問題があれば、' rename'の回りにラッパー関数を書いて '(。)'構文を避けることができます。 – konvas

+0

良い点。再配置はここでは問題ではありませんが、一般的には再配置されている可能性があります。 +1 –

関連する問題