假设我有以下列表:
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
将表写入文本文件。
这是一个简单的解决方案,适用于绝对最低限度。我仍然想弄清楚如何绘制它。