R包重构函数熔化错误:在处理大量因素时,数据中找不到id变量

时间:2012-09-07 14:35:08

标签: r reshape melt mothur

我正在处理来自mothur的稀疏输出,它基本上给我一个数据集,其中包含采样的序列数和几个样本中的唯一序列数。我想使用ggplot2来显示这些数据,因此需要使用meltwide转换为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上使用R 2.15.1。函数reshape::meltreshape2::melt都会导致相同的错误。

1 个答案:

答案 0 :(得分:12)

您应该使用:

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变量的向量。可以是整数(可变位置)或   string(变量名)如果为空,将使用所有非测量变量

因此,您的id.vars参数应该是名称的字符向量,例如“a”或数字向量,例如1。此向量的长度应等于您想要作为id的列数。

相反,您使用的元素包含的元素远多于数据中的列。

相关问题