d_ply和dist()在一起

时间:2013-01-30 16:28:40

标签: r distance plyr correlation

我遇到了我写的R代码的问题。特别是它看起来像这样:

n<- nrow(aa)
for (i in 1:n)
{
A<- aa[i,]
d_ply(A, 1, function(row){  
cu<- dist(A)
    write.table(cu, file = paste(row$header, "txt", sep     = "."), sep = "\t")
}, .progress='text', .print = TRUE)
}

我想从矩阵的每一行获取一个文件(文件名应该是行的标题),包含该行的距离矩阵,但看起来很难。如果我尝试代码,我会收到此错误:

cannot coerce class '"dist"' into a data.frame

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

首先,假设aa是一个数据框,那么A只是一行。如果您已经使用d_ply,则不需要使用for循环,dist旨在将某些内容应用于数据框的每一行。

第二个问题是dist返回一个row对象,在写入之前必须将其转换为矩阵。以下代码将执行此操作:

第三,在使用dist之前,您需要将d_ply(aa, 1, function(row){ cu<- dist(as.numeric(row[-1])) write.table(as.matrix(cu), file = paste(row$header, "txt", sep = "."), sep = "\t") }, .progress='text', .print = TRUE) 从单行数据帧转换为向量。

这导致以下代码:

{{1}}