我正在进行Fisher的置换测试,其中必须生成治疗状态的所有组合。
我们有4个主题,其中2个已接受治疗。使用combn
,我可以生成已处理主题的所有组合。例如,第一行意味着对第一和第二主题进行了治疗。
t(combn(4, 2))
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 1 4
[4,] 2 3
[5,] 2 4
[6,] 3 4
我如何从此矩阵转到治疗状态矩阵,如下所示:
[,1] [,2] [,3] [,4]
[1,] 1 1 0 0
[2,] 1 0 1 0
...
最佳答案
发表我的评论作为解决方案。这是@Heroka建议的修改。 +
将logical
转换为numeric
,并且应比as.integer
快。
+(t(combn(4,2, FUN=function(x) 1:4 %in% x)))
# [,1] [,2] [,3] [,4]
#[1,] 1 1 0 0
#[2,] 1 0 1 0
#[3,] 1 0 0 1
#[4,] 0 1 1 0
#[5,] 0 1 0 1
#[6,] 0 0 1 1