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

如何将按行分组的矩阵数据转换为带dimnames的矩阵形式?

实现按行统计矩阵值频率并生成指定格式矩阵

你可以通过以下R代码实现需求,核心思路是先提取矩阵所有唯一值作为目标列名,再逐行统计每个值的出现次数,对缺失值补0后整理成矩阵:

# 定义原始矩阵
mat = matrix(c(1, 3, 4, 11, 13, 13), nrow = 2, ncol = 3, byrow = TRUE)

# 获取矩阵中所有唯一值并排序,作为最终矩阵的列名
all_unique_values = sort(unique(c(mat)))

# 按行处理:统计每行各值的出现频率,补全缺失值为0
frequency_matrix = t(apply(mat, 1, function(row) {
  # 统计当前行的元素频率
  row_freq = table(row)
  # 遍历所有唯一值,匹配频率,无对应值则填0
  sapply(all_unique_values, function(val) {
    if (as.character(val) %in% names(row_freq)) {
      row_freq[as.character(val)]
    } else {
      0
    }
  })
}))

# 设置列名
colnames(frequency_matrix) = all_unique_values

# 输出结果
frequency_matrix

运行后得到的结果如下:

1 3 4 11 13
[1,] 1 1 1  0  0
[2,] 0 0 0  1  2

补充说明

  • sort(unique(c(mat))) 将矩阵扁平化后提取所有唯一值并排序,确保列名有序
  • apply(mat, 1, ...) 逐行处理矩阵,table(row) 统计当前行各元素的出现次数
  • sapply 遍历所有唯一值,匹配当前行的统计结果,缺失值填充0,最后通过t()转置得到行对齐的矩阵

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:12:40