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

验证R语言中矩阵与数据框匹配计算颜色占比的代码正确性

代码正确性验证

结论

你的代码是正确的,完全满足计算矩阵每行各颜色对应占比百分比的需求。

验证过程

以第一行aaa为例:

  • 根据color_df映射,蓝色对应列是111、222、333、555、999,该行对应值总和为 0 + 0.28047306 + 0.19428708 + 0 + 0 = 0.47476014,乘以100后得到47.47601,与输出结果一致。
  • 绿色对应列是444、666、777、888,该行对应值总和为 0.1856996 + 0 + 0.15062710 + 0.18891319 = 0.52523989,乘以100后得到52.52399,与结果一致。
  • 红色对应列101010的值为0,因此红色占比为0,完全符合预期格式。

代码逻辑说明

  1. col_colors <- color_df$colors[match(colnames(mat), color_df$col_names)]:准确匹配了矩阵列名与对应颜色,为后续分组求和建立了正确的对应关系。
  2. apply(mat, 1, ...):按行遍历矩阵,对每行数据按颜色分组求和并转换为百分比,逻辑清晰且计算准确。
  3. 最后将矩阵行名作为id合并到结果数据框,输出格式完全符合需求。

可选通用优化(非必需)

如果后续颜色类别可能变化(不固定为blue/green/red),可以用动态写法避免硬编码颜色值:

# 获取所有唯一颜色
unique_colors <- unique(color_df$colors)

# 动态计算每种颜色的占比
color_perc <- t(apply(mat, 1, function(x) {
  sapply(unique_colors, function(col) {
    sum(x[col_colors == col]) * 100
  })
}))

final <- data.frame(id = rownames(mat), color_perc)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:44:55