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

在R中按分类规则离散化矩阵(无需转数据框/循环)

解决方案:无需转换data.frame或循环的矩阵离散化

当然可以!完全能满足你「不转data.frame、不用循环」的要求,咱们用R的向量化特性就能轻松实现。

首先先还原你的初始代码:

set.seed(2016)
A <- matrix(rnorm(4,250,50), nrow = 2, ncol = 2, byrow = TRUE)
lmh <- c("low", "moderate", "high")

核心实现代码

直接利用cut()函数的向量化处理能力,再将结果转回矩阵结构即可:

# 执行离散化并保持原矩阵维度
A_discretized <- matrix(
  cut(A, breaks = c(-Inf, 30, 300, Inf), labels = lmh),
  nrow = nrow(A),
  ncol = ncol(A),
  byrow = TRUE  # 和原矩阵的填充顺序一致,保证位置对应
)

代码解释

  • cut()函数可以直接处理矩阵(因为矩阵在R底层是按列存储的向量,cut()会自动遍历所有元素),breaks参数定义了分类区间:<30(用-Inf兜底)、30-300、>300(用Inf兜底),labels指定了对应区间的类别名称。
  • 用matrix()将cut()返回的分类结果转回和原矩阵完全一致的行列结构,byrow=TRUE匹配原矩阵的行优先填充方式,确保每个位置的分类结果和原矩阵元素一一对应。

验证效果

你可以打印原矩阵和离散后的结果确认:

# 原数值矩阵
print(A)
# 离散化后的类别矩阵
print(A_discretized)

这种方案全程没有循环,也不需要把矩阵转换为data.frame,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:06:49