我需要一个短的R脚本,它可以将大型矩阵和data.frames重组为3列data.frames。我的当前脚本可以处理矩阵,但在输入data.frame时返回错误消息。对于如何强迫它处理两个类,有什么建议吗?
library(FD)
ds<-dummy$abun #a matrix
#reorganize into 3 column data.frame
q<-rep.int(row.names(ds),ncol(ds))
p<-rep(colnames(ds),each = (nrow(ds)))
ssf<-data.frame(q,p,as.numeric(ds))
names(ssf) <- c("site", "species", "freq")工作正常,但我希望它能够重组矩阵和数据(即)
ds<-as.data.frame(dummy$abun) #a matrix
#reorganize into 3 column data.frame
q<-rep.int(row.names(ds),ncol(ds))
p<-rep(colnames(ds),each = (nrow(ds)))
ssf<-data.frame(q,p,as.numeric(ds))
names(ssf) <- c("site", "species", "freq")返回
'Error in data.frame(q, p, as.numeric(ds)) : (list) object cannot be coerced to type 'double'发布于 2013-09-11 13:05:48
两点:
as.numeric将从一个matrix创建一个简单的向量,但是它不会对一个data.frame做同样的事情。data.frame是向量的list,而matrix是具有维属性的向量。因此,另一种选择是首先使用unlist:
as.numeric(unlist(ds,use.names = FALSE))stack,从"reshape2“探索melt。一种可能的办法是:
out <- cbind(行名(Ds),堆栈(as.data.frame(Ds)名称(Out) <- c(“向量”,"of",“name”) ##按需要替换:)
或
库(Reshape2) out <-熔体(as.matrix(Ds))https://stackoverflow.com/questions/18740947
复制相似问题