【发布时间】:2014-09-10 10:35:03
【问题描述】:
我在 R 中的矩阵上使用tcrossprod 函数。它对我的数据及其转置进行了叉积。即数据 %*% t(data)。
问题是,我不希望单个操作(数据中的行和 t(data) 中的列之间)是乘法操作。是否可以在其中指定我自己的函数,以便实现相同的算法,但它会执行其他操作而不是乘法。
我现在通过遍历矩阵并执行所需的操作来实现相同的结果,但是循环使这种方法变慢。
这是我目前正在做的事情(但将 * 操作替换为其他内容):
count<-nrow(data)
output<-sapply(1:count, function(x){
sapply(1:count, function(y){
sum((data[x,]+data[y,])*abs(data[x,]-data[y,]))
})
})
任何帮助将不胜感激。
【问题讨论】:
-
你能展示你平移使用什么功能吗?是否可以矢量化可以帮助我们为您提供快速运行的解决方案。
-
感谢@flodel,做到了。
-
这没有帮助。我们想知道 "something else" 是什么样的。没有它,(慢)一般答案是像你一样做一个双循环。
-
感谢@flodel,添加了所需的操作。
-
我很感兴趣:您能否提供一些关于您正在分析的情况的背景信息,即两个矩阵上的交叉“函数”操作如何/为什么提供有用的信息?
标签: r matrix-multiplication cross-product