|
1
4
有趣的问题。因此,循序渐进:
1.
-
但是给出两个具有相同长度的向量,
2 - 重写函数,使新函数 保持此矢量化功能 :
它确实以同样的方式工作:
3 -
重写dismatrix函数,只使用一个loopy循环,并且只使用三角形部分(无
4 - 使用函数:
|
|
|
2
3
循环确实非常低效,这里有一个快速的例子表明:
这是一个简单的内部矢量化函数sum()的比较,它本质上只是在内部计算循环中所有元素的总和;第二个函数在R代码中也执行同样的操作,这使得它调用另一个内部函数
首先,在用户定义的函数中有一些错误/不一致。
本部分:
除此之外,您的代码似乎很容易矢量化,因为您使用的所有函数都已矢量化:stringlist()、grepl()、gsub()、substr()等。基本上,您对每个单词对执行3次计算:简单的“stringist()”、交换单词的stringlist()(如果第一个单词中有空格),以及第一个字母的简单比较,如果它们不同,则增加+5分。 以下是以矢量化方式再现函数的代码,计算300x300矩阵的速度提高了约50倍:
|
|
|
3
0
我也在尝试另一种方法来改进我的答案。基本上,我删除了创建距离的函数,直接创建了距离矩阵。这就是我想到的。我知道这个解决方案可以改进。所以欢迎任何建议
我比较了以下各种解决方案的时间。
因此,上校的回答是最快的。 同样根据实际数据,我的和马克西姆的代码都崩溃了,只有上校的答案有效。 以下是结果
当我在实际数据上运行我的解决方案时-错误消息是-无法分配684MB的矢量 在运行马克西姆的解决方案时,R停止工作。 |
|
|
Hard_Course · 用另一列中的值替换行的最后一个非NA条目 1 年前 |
|
Mark R · 使用geom_sf()删除地球仪上不需要的网格线 1 年前 |
|
|
Joe · 根据对工作日和本周早些时候的日期的了解,找到一个日期 1 年前 |
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
TheCodeNovice · R中符号格式的尾随零和其他问题[重复] 1 年前 |
|
dez93_2000 · 在R管道子功能中引用管道对象的当前状态 1 年前 |
|
|
Mankka · 如何在Ggplot2中绘制均匀的径向图 1 年前 |