web-dev-qa-db-ja.com

Rパッケージ変形関数メルトエラー:多くの要因を処理しているときに、データにid変数が見つかりません

mothur からの希薄化出力を使用しています。これにより、基本的に、サンプリングされたシーケンスの数といくつかのサンプルの一意のシーケンスの数を含むデータセットが得られます。このデータを視覚化するためにggplot2を使用したいので、meltを使用してwideからlong形式に変換する必要があります。

問題は、meltのエラーのため、これを機能させる方法が見つからないことです。基本的には

エラー:データにID変数が見つかりません:1,3,6(...など)

元のデータセットのサイズのため、ここで共有することは実際的ではありませんが、次のコードを使用して同じ問題を再現できるはずです。

a<-seq(0,300,3)
b<-runif(length(a))
c<-runif(length(a))
d<-as.data.frame(cbind(a,b,c))
d$a<-as.factor(d$a)
melt(d,d$a)

まったく同じエラーが発生します:

エラー:データにID変数が見つかりません:0、3、6、9、(...)

私は自分が間違っていることを確認できません。私はubuntuサーバー12.04でR2.15.1を使用しています。両方の関数reshape::meltおよびreshape2::meltは同じエラーになります。

16
FM Kerckhof

あなたは使うべきです:

melt(d, id.vars="a")
      a variable       value
1     0        b 0.019199459
2     3        b 0.693699677
3     6        b 0.937592641
4     9        b 0.299259963
5    12        b 0.485403439
...

?melt.data.frameの助けを借りて:

データ
溶けるデータフレーム

id.vars
id変数のベクトル。整数(変数の位置)または文字列(変数名)にすることができます空白の場合、測定されていないすべての変数を使用します

したがって、id.vars引数は名前の文字ベクトルである必要があります。 「a」または数値ベクトル。 1。このベクトルの長さは、IDとして必要な列の数と等しくなければなりません。

代わりに、データの列よりもはるかに多くの要素を含む因子を使用しました。

12
Andrie