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

在R中为各值频率加条件扩展网格:颜色组合筛选需求

解决方法

我们可以通过分情况生成符合条件的组合,再合并结果来实现需求:

  1. 先拆分颜色集合:

    • 普通颜色:排除"ID"和"EMPTY"的其他颜色
    • 特殊颜色:仅包含"ID"和"EMPTY"
  2. 分别生成两种符合条件的组合:

    • 情况1:某一列是"ID",其余三列为普通颜色
    • 情况2:某一列是"EMPTY",其余三列为普通颜色
  3. 合并两种情况的结果,得到最终的有效组合表

修改后的R代码如下:

library(tidyr)

# 拆分颜色集合
colour_all <- c("BK", "CS", "DB","DG","LB","LG","MV","OR","RD","WT","YL","ID","EMPTY")
colour_normal <- colour_all[!colour_all %in% c("ID", "EMPTY")]
colour_special <- c("ID", "EMPTY")

# 生成情况1:单列是ID,其余为普通颜色
combo_id_A <- expand.grid(A = "ID", B = colour_normal, C = colour_normal, D = colour_normal)
combo_id_B <- expand.grid(A = colour_normal, B = "ID", C = colour_normal, D = colour_normal)
combo_id_C <- expand.grid(A = colour_normal, B = colour_normal, C = "ID", D = colour_normal)
combo_id_D <- expand.grid(A = colour_normal, B = colour_normal, C = colour_normal, D = "ID")
combo_id <- rbind(combo_id_A, combo_id_B, combo_id_C, combo_id_D)

# 生成情况2:单列是EMPTY,其余为普通颜色
combo_empty_A <- expand.grid(A = "EMPTY", B = colour_normal, C = colour_normal, D = colour_normal)
combo_empty_B <- expand.grid(A = colour_normal, B = "EMPTY", C = colour_normal, D = colour_normal)
combo_empty_C <- expand.grid(A = colour_normal, B = colour_normal, C = "EMPTY", D = colour_normal)
combo_empty_D <- expand.grid(A = colour_normal, B = colour_normal, C = colour_normal, D = "EMPTY")
combo_empty <- rbind(combo_empty_A, combo_empty_B, combo_empty_C, combo_empty_D)

# 合并两种情况,得到最终有效组合
combo_valid <- rbind(combo_id, combo_empty)

# 可选:重置行号
rownames(combo_valid) <- NULL

代码说明

  • 拆分颜色集合后,我们直接规避了生成包含多个特殊颜色、或同时包含两种特殊颜色的无效组合
  • 通过分别生成单列特殊颜色的组合,确保每行仅包含一个"ID"或"EMPTY",且至少包含其中一个
  • 最终的combo_valid就是符合所有条件的颜色组合表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:24:14