R:两个矩阵的列之间的成对欧式距离

| 以下循环耗时太长,无法运行(2分钟/迭代) 肿瘤信号尺寸为950000x422 normal_signals的大小为950000x772 关于如何加快速度的任何想法?
for(i in 1:ncol(tumor_signals)){
x <- as.vector(tumor_signals[,i])
print(\"Assigned x\")
y <- t((t(normal_signals) - x)^2)
print(\"assigned y\")
y <- t(sqrt(colSums(y)))
print(\"done\")
#all_distance <- cbind(all_distance,matrix(distance))
print(i)
}
    
已邀请:
        您的代码中有一个错误-您不需要对
normal_signals
进行转置。据我了解,您正在尝试为所有
i = 1,2,...422
j=1,2,...,772
计算
tumor_signals[,i]
normal_signals[,j]
之间的欧几里得距离。您可能希望将结果保存在422 x 772矩阵中。软件包
fields
中有一个函数
rdist()
将为您完成此操作:
require(fields)
result <- rdist(t(tumor_signals), t(normal_signals))
顺便说一句,用Google搜索“ 9”会很容易找到这个软件包。     

要回复问题请先登录注册