我有两个数据框 - 学习数据有L行,测试数据有T行。
我想计算一个L*T的矩阵,其中包含相应元素之间的距离(欧几里得距离、曼哈顿距离、余弦相似度等)。
这是我的方法:
distance2 <- function (x1, x2) {
temp <- x1 - x2
sum(temp * temp)
}
m <- matrix(0,nrow(learnData),nrow(testData))
for(td in 1:nrow(testData)) {
for(ld in 1:nrow(learnData)) {
m[ld,td] <- distance2(testData[td,],learnData[ld,])
}
}
我认为这可以用更紧凑的“R”方法完成。有什么想法吗? 谢谢。
fields
包中的rdist
。它比dist
更快,并且更适合您的要求(两个数据框)。请参见https://dev59.com/sGLVa4cB1Zd3GeqP0d1Y#10220868。 - flodel