在图形或文本输出中显示 combn() 的不同排列



假设我有以下列表:

colors <- c("red", "green", "purple", "yellow")

我想找到这些颜色的所有组合,但只使用每种颜色一次。我可以组合颜色,但最终我必须只得到一个 4 种颜色组合(我不确定这叫什么,也非常感谢这里的一些术语帮助):

col1 <- combn(colors, 1, simplify=FALSE)
col2 <- combn(colors, 2, simplify=FALSE)
col3 <- combn(colors, 3, simplify=FALSE)
col4 <- combn(colors, 4, simplify=FALSE)

我使用以下方法计算了不同组合的总数(无论错误如何):

total_color_combo <- length(col1) + length(col2) + length(col3 ) + length(col4)

total_color_combo结果为 15。这个数字是我可以拥有的总可能组合,无论顺序如何。

问:如何在可读输出中显示排列,最好以图形方式显示?

理想情况下,我可以让 R 输出如下所示的图形:

     Red    Green    Purple
    /      /           
  Green  Purple Yellow   Yellow
    /                     
 Purple Yellow Yellow       Green
   /
 Yellow

使用此输出,我可以快速获得所有不同变量的第一个组合。最好是我想将其输出为图表,但我还没有弄清楚如何正确将其保存为表格。任何帮助将不胜感激。

此外,我的真实数据比这大得多。

为了以可读的格式输出文件,我选择了文本输出。我使用以下代码创建了每个组合的矩阵,并从plyr包中,我使用rbind.fill.matrix创建了一个矩阵,然后将其写入文件。这是我使用的代码。

col1 <- matrix(unlist(combn(colors, 1, simplify=FALSE)), ncol=1, byrow=TRUE)
col2 <- matrix(unlist(combn(colors, 2, simplify=FALSE)), ncol=2, byrow=TRUE)
col3 <- matrix(unlist(combn(colors, 3, simplify=FALSE)), ncol=3, byrow=TRUE)
col4 <- matrix(unlist(combn(colors, 4, simplify=FALSE)), ncol=4, byrow=TRUE)

然后,我将文件合并到一个组合矩阵中。

cColors <- rbind.fill.matrix(col1, col2, col3, col4)

然后,我删除了 NA,以便它更易于阅读。

cColors[is.na(cColors)] <- ""

然后,我使用 write.table 将表写入文本文件。

这是一个简单的解决方案,适用于绝对最低限度。我仍然想弄清楚如何绘制它。

最新更新