r - R中的Matlab find()函数
问题描述
我正在尝试将一些 Matlab 代码转换为 R。代码如下所示:
u= [.4 .5 .1;
.2 .4 .4;
.4 .1 .5]
z= find(cumsum(u)>= rand,1)
OUTPUT: e.g. z = 3
数学背景是这样描述的(来自数学 tut. 脚本):
我们制作一个包含列的累积和的向量(我们知道 sum to one),生成一个随机数(0-1),然后使用 find 函数获取累积和向量中的第一个数字,即 >=随机数。例如,如果我们的 D 向量是 [.5 .5] 50% 的时间,对应于状态一的向量元素将 >= 到随机数。https://psyarxiv.com/b4jm6/
我试图find()
从pracma
包中使用(下面的文档链接),但我不知道如何让它工作。我得到要么"dims[product...] do not match the length of object"
或大部分只是"is.character(what) is not TRUE"
......
Matlab函数:
k = find(x,n)
返回与 X 中的非零元素对应的前 n 个索引。 https://de.mathworks.com/help/matlab/ref/find.html
find()
来自 R 包pracma
,似乎只能转换find(x)
:
https ://www.rdocumentation.org/packages/pracma/versions/1.1.0/topics/find
解决方案
由@Rui Barradas 解决:which(cumsum(u)>= runif(1))[1]
推荐阅读
- javascript - 检查是否在测试模式下调用了函数
- python - 无法将值应用于列表
- python-3.x - 在 python 3 中使用子进程模块时如何避免 WinError 5
- scala - 如何在 sbt 中更改测试执行的并发性
- r - R Shiny:错误导航栏页参数丢失,没有默认值,闪亮的 R
- html - div 中的 p 标签影响相邻 div 的位置
- android - Android Searchview:默认打开建议列表下拉菜单
- python - Matplotlib 3D Quiver plot 使线条颜色正确,但箭头颜色错误
- windows-store - Windows 应用商店应用提交预告错误
- java - 拖放 Android Java - 拖放时保持原始视图