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

在Base R中实现矩阵列与向量的布尔表达式求值及占比计算

矩阵行满足列对应阈值条件的占比计算(Base R无循环实现)

核心通用代码

row_proportion <- function(X, y) {
  sum(rowSums(abs(X) <= y) == ncol(X)) / nrow(X)
}

代码逻辑解释

  1. 逐元素匹配判断:abs(X) <= y 利用R的向量自动循环特性,将向量y与矩阵X的每列一一对应,生成同维度的逻辑矩阵,每个元素标记|X[i,j]| ≤ y[j]是否成立。
  2. 行内条件校验:rowSums(abs(X) <= y) 对每行的逻辑值求和(TRUE=1,FALSE=0),得到每行满足单列条件的数量;再通过== ncol(X)筛选出所有列都满足条件的行。
  3. 计算占比:用sum()统计符合要求的行数,除以总行数得到最终比例。

示例验证

# 生成模拟数据(匹配手动实现的输出场景)
set.seed(123)
X <- matrix(rnorm(9*3, 0, 2), nrow = 9) # 9行3列的随机矩阵
y <- c(1, 1.5, 2) # 对应3列的阈值向量

# 调用函数计算
row_proportion(X, y)
# 输出结果:0.2222222(与手动逐列判断结果一致)

对比手动实现

手动逐列判断的写法(仅适用于固定列数):

# 手动写法示例(仅3列场景)
sum(abs(X[,1]) <= y[1] & abs(X[,2]) <= y[2] & abs(X[,3]) <= y[3]) / nrow(X)

核心代码无需修改即可适配任意列数的矩阵,避免了重复编写判断条件,扩展性更强。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:01:01