【问题标题】:Matrix Error in RR中的矩阵错误
【发布时间】:2016-04-18 22:50:05
【问题描述】:

我正在 R 中编写一个函数来获取一个数字并对矩阵的每一行执行操作。每个矩阵应该有 50 个元素,ncol(x) 是 50。这是我正在执行的计算

function(v1,v2){
 a <- sum(v1*v2)
 b <- sqrt(sum(v1*v1))* sqrt(sum(v2*v2))
return(a/b)
}

这是我的数据示例:

the 0.41800  0.249680 -0.41242  0.121700 0.345270 -0.044457 -0.49688 -0.178620 -0.00066023 -0.656600 0.278430 -0.14767 -0.55677  0.14658 -0.0095095
. 0.15164  0.301770 -0.16763  0.176840 0.317190  0.339730 -0.43478 -0.310860 -0.44999000 -0.294860 0.166080  0.11963 -0.41328 -0.42353  0.5986800
of  0.70853  0.570880 -0.47160  0.180480 0.544490  0.726030  0.18157 -0.523930    0.10381000 -0.175660 0.078852 -0.36216 -0.11829 -0.83336  0.1191700
to  0.68047 -0.039263  0.30186 -0.177920 0.429620  0.032246 -0.41376  0.132280 -0.29847000 -0.085253 0.171180  0.22419 -0.10046 -0.43653  0.3341800
and 0.26818  0.143460 -0.27877  0.016257 0.113840  0.699230 -0.51332 -0.473680 -0.33075000 -0.138340 0.270200  0.30938 -0.45012 -0.41270 -0.0993200
in  0.33042  0.249950 -0.60874  0.109230 0.036372  0.151000 -0.55083 -0.074239 -0.09230700 -0.328210 0.095980 -0.82269 -0.36717 -0.67009  0.4290900`

这就是我想要写的,它非常简单:

function(w,m) {
 r=matrix(nrow=nrow(m),ncol=2)
 for(i in 1:(nrow(m)-1)) {
 r[i,1]=cosineSim(m[w,],m[i,])
}
 r=sort(r,decending=TRUE)
 return (r)
}

1) 创建一个与矩阵 m 具有相同列和行的新矩阵。 2)循环通过 m-1 行。 3)每一行,使用cosineSim计算循环当前向量(行)的余弦相似度。 4)一旦循环结束,排序并返回r,这是保存结果的数组。

问题是算法似乎进入了无限循环。

我需要这个来为一个项目工作,非常感谢任何帮助。

【问题讨论】:

  • R 中的向量从 1 而不是 0 开始。
  • 非常感谢,但是现在我的问题似乎是它进入了无限循环,我不完全确定它没有运行,我正在使用 20M 元素,但我有一个相当体面的笔记本电脑,它已经运行了几分钟。我将更新我的问题以反映这一点。

标签: r matrix


【解决方案1】:

感谢 TMin 的建议,我才能够意识到我的代码中的问题。我还发现它并没有陷入无限循环,而是扫描约 20M 元素并花费很长时间。

【讨论】:

    猜你喜欢
    • 2016-03-27
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2016-11-25
    • 2017-05-23
    • 2019-01-05
    相关资源
    最近更新 更多