You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:09:02