【发布时间】:2015-02-12 22:26:51
【问题描述】:
以下是一个看似简单的谜题,我很难弄清楚如何解决。任何帮助将不胜感激。
我有一个维度为 m=n 的 T/F 值的矩阵。例如。
tf.m2 = matrix(c(F,T,T,F,T,T,F,F,F), ncol = 3)
[,1] [,2] [,3]
[1,] FALSE FALSE FALSE
[2,] TRUE TRUE FALSE
[3,] TRUE TRUE FALSE
目标是为每一列选择一个值为 TRUE 的行,这样没有列使用相同的行。 这很难传达,因此我在下面为上述矩阵提供了所需的解决方案。
goal = rbind(c(2,3,1), c(3,2,1))
[,1] [,2] [,3]
[1,] 2 3 NA
[2,] 3 2 NA
在这里,每一行都是不同的解决方案;每个解决方案都是原始矩阵中每一列中行值的可接受组合,因此没有组合使用同一行两次。例如。 c(2,2,NA) 不是解决方案。
我真的用这个把头撞在墙上了。这看起来很简单,而且很可能是。我就是不明白。
这也是我真实数据中的一个非玩具示例。
tf.m2.l = matrix(c(F,T,F,F,T,F,T,F,F,F,F,T,F,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F), ncol = 7)
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[5,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE
[6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[7,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE
goal.l = rbind(c(2,5,NA,NA,NA,NA,NA), c(2,7,NA,NA,NA,NA,NA), c(5,7,NA,NA,NA,NA,NA), c(7,5,NA,NA,NA,NA,NA))
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 2 5 NA NA NA NA NA
[2,] 2 7 NA NA NA NA NA
[3,] 5 7 NA NA NA NA NA
[4,] 7 5 NA NA NA NA NA
【问题讨论】:
标签: r