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

时间:2013-12-17 05:09:05

标签: r

说我有以下列表:

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

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

另外,我的实际数据远远大于此。

1 个答案:

答案 0 :(得分:0)

要以可读格式输出文件,我用文本输出结算。我使用以下代码创建了每个组合的矩阵,并且从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将表格写入文本文件。

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