0

1 つのリスト (myList など) に 2 つの行列 (S と P など) を作成したいと考えています。これらはそれぞれバイナリ値を取ることができ、次のような対角行列です (T は TRUE を表し、F は FALSE を表します)。

S:
S1  S2
T   F
F   T 

P:
P1 P2 P3
T  F  F
F  T  F
F  F  T

そして、これら 2 つの変数のすべての組み合わせをバイナリ形式で表示できるマトリックス (または 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  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])
)

ありがとう!

4

1 に答える 1

2

もしかしてこういうこと?

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
于 2013-07-16T01:19:02.010 に答える