2016-10-18 9 views
0

データフレーム名のリストを持っていますdata.framesのリストのn番目の要素のcolnamesを変更する

私はオブジェクト()を使ってそれらを取得しました。

my_list <- objects() 

my_list 

[1]"df1" 
[2]"df2" 
[3]"df3" 
[4]"df4" 
... 

各データフレームは、私は、データフレームの最初の4列に名前を付けるために使用する3つの異なる文字ベクトルv1,v2,v3(長さ4)を有する7列

を有しています。基本的には、data.frameリストのすべての列が命名されるまで、それらのベクトルをその順序で再利用したいと考えています。

重要:3つのベクトルを使用して、すべてのデータフレームに名前を付ける必要があります。 ... data.tableパッケージから

df1 

    X1 X2 X3 X4 X5 X6 X7 
1 NA NA NA NA NA NA NA 
2 NA NA NA NA NA NA NA 
3 NA NA NA NA NA NA NA 

v1 <- c(a,b,c,d)  


magic(my_list) 

df1 

    a b c d X5 X6 X7 
1 NA NA NA NA NA NA NA 
2 NA NA NA NA NA NA NA 
3 NA NA NA NA NA NA NA 
... 

答えて

1

Setnamesが動作するなど、df4に名前を付けるAGAIN df3v1に名前を付けるdf2v3に名前を付けるdf1v2に名前を付けるv1

setnames(df,old = c(1:4), new = v1[1:4]) 

編集:あなたのリスト全体でこれを行うには、lapplyを使用できます。

lapply(l, function(x) setnames(x,old = c(1:4), new = v1[1:4])) 

EDIT2:3つのベクトルをリサイクルし、読み少し簡単にそれを維持 -

for (i in 1:length(l)) 
      { 
    if (i%%3 == 1) { 
    setnames(l[[i]],old = c(1:4), new = v1[1:4]) 
    } 
    else if (i%%3 == 2) { 
    setnames(l[[i]],old = c(1:4), new = v2[1:4]) 
    } 
    if (i%%3 == 0) { 
    setnames(l[[i]],old = c(1:4), new = v3[1:4]) 
    } 
} 
+0

正しい、ちょうど最初の4 – jesusgarciab

+0

私はまだdata.tableに精通していないよ、と私私のデータフレームのリストを通して3つのベクトルをどのようにリサイクルすることができますか? – jesusgarciab

+0

あなたがまだ見たことがないなら、私の答えはうまくいくはずです@jesusgarciab –

関連する問題