如何使用Melt函数重新排列给定数据

时间:2015-05-13 06:30:27

标签: r melt

我正在尝试使用以下函数http://www.r-bloggers.com/using-r-two-plots-of-principal-component-analysis/

我的工作如下:

data(iris) 
df <- iris[,1:4]
variable.groups <- c(rep(1,50), rep(2,50), rep(3,50))
library(reshape2)
library(ggplot2)
pca <- prcomp(df, scale=TRUE)
melted <- cbind(variable.groups, melt(pca$rotation[,1:4]))

我收到错误说

Error in data.frame (..., check.names=FALSE): arguments imply differing number of rows: 150, 16 

我基本上不明白,是上面链接的融化,有什么想法,我怎么能设置虹膜数据相同?

1 个答案:

答案 0 :(得分:2)

快速回答:

variable.groups需要长度为4.所以这解决了它:

variable.groups <- c(1,2,3,4) #or any other 4 classes

答案很长:

将您的代码与http://www.r-bloggers.com/using-r-two-plots-of-principal-component-analysis/处的代码进行比较我认为您正在混合sample.groupsvariable.groups

从那篇文章中取data它有以下几个方面:

> dim(data)
[1] 50 70

所以sample.groupsvariable.groups确实具有以下长度:

> length(sample.groups)
[1] 50
> length(variable.groups)
[1] 70

在您的代码中dfvariable.group确实有以下维度:

> dim(df)
[1] 150   4
> length(variable.groups)
[1] 150

因此,与您引用的代码相比,variable.groups的长度应为4.