如何在R中实现Matlab的find(x,n)功能,完成累积和抽样需求
Matlab逻辑转R实现方案
你无需引入第三方包,使用R原生函数即可实现需求,完整可运行代码如下:
# 1. 定义3x3矩阵,R默认按列填充,和Matlab矩阵存储逻辑一致 u <- matrix( data = c(.4, .2, .4, .5, .4, .1, .1, .4, .5), nrow = 3, ncol = 3 ) # 2. 核心逻辑实现 cum_vec <- cumsum(u) # 按列优先展平矩阵并计算累积和 rand_val <- runif(1) # 生成0-1区间的均匀随机数 z <- which(cum_vec >= rand_val)[1] # 取第一个满足条件的元素下标
原报错原因说明
你之前调用pracma包的find()函数属于误用:该函数的功能是查找指定名称的R对象在搜索路径中的位置,仅接受字符类型输入,和Matlab中用于查找满足条件元素下标的find()函数功能完全无关,因此传入逻辑向量时会触发类型不匹配、维度不匹配类报错。
内容的提问来源于stack exchange,提问作者Steffen Schwerdtfeger
相关产品推荐
相关产品推荐

