【发布时间】:2023-03-27 14:58:01
【问题描述】:
我正在使用R,我有这样的代码:
for (i in 1:10)
for (j in 1:100)
if (data[i] == paths[j,1])
cluster[i,4] <- paths[j,2]
在哪里:
-
data是一个100行1列的向量 -
paths是一个 100 行 5 列的矩阵 -
cluster是一个 100 行 5 列的矩阵
我的问题是:如何避免使用“for”循环来遍历矩阵?我不知道apply 函数(lapply、tapply...)在这种情况下是否有用。
例如j=10000时会出现这个问题,因为执行时间很长。
谢谢
【问题讨论】:
-
我觉得这里的翻译有些遗漏了?
-
您真的打算将最后匹配的“路径”保存在“集群”中吗?
-
是的,Musa 和 wkmor1 说的……你真的是想让我达到 10……只测试 100 项向量数据中的前 10 项吗? --- 你的问题的一般答案是你必须开始思考向量而不是单个项目。只要有意义,就有更快的方法来做你正在做的事情。
-
谢谢你们。我想要做的是当“数据”中的值等于“路径”中的值时,将路径第 2 列的第 4 列值保存在集群中,并避免使用“for”语句,因为当我有很多观察值时,计算时间会大大增加
-
当它们不相等时你想做什么?......它们只是被忽略了?......或者集群第4列已经设置为不会改变的东西,除非这个条件满足。 (听起来像一个简单的 ifelse() 命令——没有循环——查看帮助)
标签: optimization r loops