2017-01-16 25 views
2

複雑な関数をlapplyすることによって生成されるデータフレーム(outputDfList)の大きなリストをrbindしようとしています。大きなテーブル。R:pi [[j]]のエラー:範囲外の添え字 - データフレームのリストのrbind

Error in pi[[j]] : subscript out of bounds 

私は二重の各データフレームの列番号を確認し、それらがすべてある:私のコードは

do.call(rbind, outputDfList) 

私が受信したエラーメッセージです

df1=data.frame("randomseq_chr15q22.1_translocationOrInsertion", "chr15", "63126742") 
names(df1)=NULL 
df2=df1=data.frame("chr18q12.1_chr18q21.33_large_insertion", "chr18 ", "63126741") 
names(df2)=NULL 
outputDfList=list(df1,df2) 
を:あなたはでoutputDfList再作成することができます同じ。私はまた、デバッグのために "options(error = recover)"を使用しようとしましたが、私は正確な問題を突き止めるのに十分なほど精通していません。どんな助けもありがとうございます。ありがとうございました。

+0

エラーメッセージを再現できません。問題を再現するための最小限の例を構築し、正確なコード/データをここに再現する必要があります。 [reprexはそれに役立つかもしれません。](http://jennybc.github.io/reprex/) –

+0

@KonradRudolphコメントをいただきありがとうございます。あなたが正しいです。私は自分のデータフレームの長い名前を追加したので、今はエラーが表示されるはずです。 – Helene

+0

残念ながら、これは十分ではありません。なぜなら、あなたのデータがどのように見えるかをまだ分かっていないからです(投稿したデータからデータを再構築しようとすると、コマンドは機能します)。関連するデータを入力してください。 –

答えて

1

更新後、問題が無効な列名であるように見えます。データフレーム列名はNULLでなくてはなりません。

はこれを修正した後、コードは動作します:

for (i in seq_along(outputDfList)) { 
    colnames(outputDfList[[i]]) = paste0('V', seq_len(ncol(outputDfList[[i]]))) 
} 

do.call(rbind, outputDfList) 
#          V1  V2  V3 
# 1 chr18q12.1_chr18q21.33_large_insertion chr18 63126741 
# 2 chr18q12.1_chr18q21.33_large_insertion chr18 63126741 

はしかし、私はこのような状況は、最初の場所で発生したか困惑しています。さらに、私はあなたのコードを取得していますエラーメッセージがまだあなたとは区別される:match.namesで

エラー(clabs、名前(XI)):
名は、以前の名前

と一致しません
+0

返事をありがとう。私はそれにも困惑しています...しかし、あなたは自分のデータフレームの列名が必要であるということは絶対に正しいです。私はこれをデータフレームのリストを生成する関数に追加し、それが機能しました。ありがとうございました! – Helene

関連する問題