2016-03-27 14 views
-3

私はそのようなリスト(list1)を持っています。各要素は1つの列で構成されるデータフレームです。リスト内のデータフレームの列名を変更する際のエラー - R

すべての列名は同じ「x」です。列名を "x1"、 "x2"、...、 "xn"に変更したい。

私はコードの下に使用します。

lapply(list1, function(x) setNames(x, "x",paste("x",1:seq_along(list1)))) 

しかし、このコードは動作しません。なぜこのコードは機能しませんか?私はどんな助けも非常にうれしく思います。どうもありがとう。デビッドArenburg @

は、私は(10 LIST1でelment番号である)として、以下のコードを編集した:

lapply(list1, function(z) setNames(z,paste0("x",1:10))) 

このコードはすべてのエラーを与えるものではありませんが、それはまた、カラムnames.Theの列名を変更しません。 arsはまだ "x"です。

私は以下のように編集しましたが、まだ動作しません。

for(i in 1:10) 
{ 
    list2[[i]]<-setNames(data.frame(list1[[i]])[,1], paste0("x",1:10)[i]) 
} 

私は現在seq_alongを削除しました。希望の結果を得た後、私はそれに取り組んでいきます。

list1の各要素はデータフレームであり、各データフレームには1つの列しかありません。

+1

これは再現できませんが、 '1:seq_along(list1)'は正しく動作しません。 '1:seq_along(mtcars)'を試してください。これはちょうど 'seq_along(mtcars)'でなければなりません。しかし、あなたの場合は 'seq_along'に' list1'を引き渡しているので、 'x'をここでどう使うのかははっきりしません。これは私には意味をなさない。また、 'setNames'の使い方も不明です。これは2つの入力を必要とします - 3ではなく、おそらくあなたの名前が総合的に妥当であることを望むので、これは 'paste0'でなければなりません。 –

+0

結果をオブジェクトに代入していますか? –

+0

'setNames'はその場で修正されません。あなたはそれをどこかに割り当てる必要があります。すでに述べたように、[これは再現できません](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。そして 'seq_along'はどうなったのですか?そして、「*一つの列になる*」とはどういう意味ですか?いくつの列がありますか? –

答えて

1

あなたがリストを作成する複数のデータフレーム内の各列の名前を変更したい場合は、以下の操作を行う必要があります

# Artificial list with each data frame containing columns with values from 1 to 3 

list1 = list(data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3), 
     data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3), 
     data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3), 
     data.frame(x = 1:3)) 

# Assigning column names of individual data frames 

for(i in 1:length(list1)){ 
    colnames(list1[[i]]) = paste("x",i, sep = "") 
} 

私はそれらの一つ一つは、それを含む複数のデータフレームにリストを作成列x。データフレーム内の列の名前を変更したいので、setNames()の複数の値を各個別のデータフレームに割り当てるのは役に立ちません。したがって、個々のデータフレームの列名に1つの値(1からリストの長さ)のxを貼り付けなければなりません。

関連する問題