我遇到了我写的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
我该如何解决这个问题?
答案 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}}