说我有以下列表:
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
使用此输出,我可以快速找到所有不同变量的第一个组合。最好,我想将其输出为图形,但我还没想出如何将其正确地保存为表格。任何帮助将不胜感激。
另外,我的实际数据远远大于此。
答案 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
将表格写入文本文件。
这是一个简单的解决方案,适用于绝对最低限度。我还想弄清楚如何绘制它。