0

Rに同じ次元の 2 つ (またはそれ以上) のテーブルがあります。

table1 <- as.table(matrix("TOP", nrow=4, ncol=2 )) 
table2 <- as.table(matrix("BOTTOM", nrow=4, ncol=2 )) 
> table1
  A   B  
A TOP TOP
B TOP TOP
C TOP TOP
D TOP TOP
> table2
  A      B     
A BOTTOM BOTTOM
B BOTTOM BOTTOM
C BOTTOM BOTTOM
D BOTTOM BOTTOM

それらを行ごとにバインドしたい。対照的に、私にrbind与えます

> rbind(table1,table2)
  A        B       
A "TOP"    "TOP"   
B "TOP"    "TOP"   
C "TOP"    "TOP"   
D "TOP"    "TOP"   
A "BOTTOM" "BOTTOM"
B "BOTTOM" "BOTTOM"
C "BOTTOM" "BOTTOM"
D "BOTTOM" "BOTTOM"

私が欲しいのはいつ

 > something(table1,table2, byrow=TRUE)
   A        B       
  A "TOP"    "TOP"   
  A "BOTTOM" "BOTTOM"  
  B "TOP"    "TOP"   
  B "BOTTOM" "BOTTOM"
  C .....
4

3 に答える 3

4

interleave「gdata」パッケージから使用します。

> library(gdata)
> interleave(table1, table2)
  A        B       
A "TOP"    "TOP"   
A "BOTTOM" "BOTTOM"
B "TOP"    "TOP"   
B "BOTTOM" "BOTTOM"
C "TOP"    "TOP"   
C "BOTTOM" "BOTTOM"
D "TOP"    "TOP"   
D "BOTTOM" "BOTTOM"
于 2013-03-22T18:31:05.290 に答える
1

@Anandaのソリューションが好きです。ベースRに固執したい場合:

t(mapply(rbind, table1, table2))

最終的な目標が何であるかは完全には明らかではありませんが、複数の呼び出しを行っtableてから、それらをうまく統合しようとしていると思います。

a を使用する方が簡単かもしれません。data.tableその後、単純に実行できます

myDT[..., table(<variables>), by=<someFactor>]
于 2013-03-22T18:48:34.387 に答える
0

手作りの別の試み:

stopifnot(nrow(table1)==nrow(table2))
interleaved <- rep(seq(nrow(table1)),each=2)+c(0,nrow(table1))
rbind(table1,table2)[interleaved,]
于 2013-03-22T19:49:20.587 に答える