R中两个矩阵的连接
我想在一个列表(比如myList)中创建两个矩阵(比如S和p),每个矩阵都可以取二进制值,并且是对角矩阵,如(T代表TRUE,F代表FALSE): 然后我想创建一个矩阵(或data.frame),它可以以二进制格式显示这两个变量的所有组合。例如,它应该是这样的:R中两个矩阵的连接,r,join,matrix,R,Join,Matrix,我想在一个列表(比如myList)中创建两个矩阵(比如S和p),每个矩阵都可以取二进制值,并且是对角矩阵,如(T代表TRUE,F代表FALSE): 然后我想创建一个矩阵(或data.frame),它可以以二进制格式显示这两个变量的所有组合。例如,它应该是这样的: S1 S2 P1 P2 P3 T F T F F T F F T F T F F F T F T T F F F T F T F F T F F T F F T F
S1 S2 P1 P2 P3
T F T F F
T F F T F
T F F F T
F T T F F
F T F T F
F T F F T
F F T F F
F F F T F
F F F F T
我在另一个列表中列出了每个矩阵的大小:myMatrixSizes
我在R怎么做
我尝试过这个,但结果不是我想要的形状:
lapply(
lapply(
c(myList),
function(y) Diagonal(myMatrixSizes(y,myList)])==1
),
function(x) lapply(x,2, rep, prod(myMatrixSizes)/ dim(x)[1])
)
谢谢 大概是这样的吧
S <- data.frame(S1=c(TRUE,FALSE),S2=c(FALSE,TRUE))
P <- data.frame(P1=c(TRUE,FALSE,FALSE),P2=c(FALSE,TRUE,FALSE),P3=c(FALSE,FALSE,TRUE))
ids <- expand.grid(1:length(S),1:length(P))
t(mapply(function(x,y) unlist(c(S[x,],P[y,])) , ids[[1]], ids[[2]]))
S1 S2 P1 P2 P3
[1,] TRUE FALSE TRUE FALSE FALSE
[2,] FALSE TRUE TRUE FALSE FALSE
[3,] TRUE FALSE FALSE TRUE FALSE
[4,] FALSE TRUE FALSE TRUE FALSE
[5,] TRUE FALSE FALSE FALSE TRUE
[6,] FALSE TRUE FALSE FALSE TRUE
S在获取(2vars*3vars)的每个组合时,如何获取9行?
S <- data.frame(S1=c(TRUE,FALSE),S2=c(FALSE,TRUE))
P <- data.frame(P1=c(TRUE,FALSE,FALSE),P2=c(FALSE,TRUE,FALSE),P3=c(FALSE,FALSE,TRUE))
ids <- expand.grid(1:length(S),1:length(P))
t(mapply(function(x,y) unlist(c(S[x,],P[y,])) , ids[[1]], ids[[2]]))
S1 S2 P1 P2 P3
[1,] TRUE FALSE TRUE FALSE FALSE
[2,] FALSE TRUE TRUE FALSE FALSE
[3,] TRUE FALSE FALSE TRUE FALSE
[4,] FALSE TRUE FALSE TRUE FALSE
[5,] TRUE FALSE FALSE FALSE TRUE
[6,] FALSE TRUE FALSE FALSE TRUE