0

次のようなリストがあります。

リスト[[1]]

 GN  SN1  SN2      
  a   0    0      
  b   1    1     
  c   0    0    
  e   2    2     
  f   0    1    
  d   0    0

リスト[[2]]

 GN  SN1  SN2      
  e   0    1      
  f   2    0     
  g   1    1    
  h   2    0     
  i   1    0    
  l   3    0

私が望むのは、リストの各要素に「テーブル」関数を適用することです(したがって、各リスト[[1]]、リスト[[2]]、...)最初に列ごとに、次に行ごとに、たとえばそのようなものを使用します構造: apply(list, 1, table) (リストの場合は lapply) または apply(list, 2, table) で、同じ方法で行ごとに合計し、列ごとに合計します。

誰でも私を助けることができますか?

前もって感謝します、

B.

4

1 に答える 1

5

こんなこともあるかも…

lapply(List, apply, 1, table) # table by row
lapply(List, apply, 2, table) # table by cols

出来上がりがよろしくない。

より良い出力は次のようになります。

list1 <- lapply(List, apply, 1, table) # table by row
list2 <- lapply(List, apply, 2, table) # table by cols

> # for list1
> lapply(list1, unlist) # output is a list
[[1]]
0 a 1 b 0 c 2 e 0 1 f 0 d 
2 1 2 1 2 1 2 1 1 1 1 2 1 

[[2]]
0 1 e 0 2 f 1 g 0 2 h 0 1 i 0 3 l 
1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 


> # for list2
> library(abind)
> # using abind function from abind package
> abind(lapply(list2, unlist), along=0)  # output is an array
     GN.e GN.f GN.g GN.h GN.i GN.l SN1.0 SN1.1 SN1.2 SN1.3 SN2.0 SN2.1
[1,]    1    1    1    1    1    1     4     1     1     3     2     1
[2,]    1    1    1    1    1    1     1     2     2     1     4     2

> # R base solution
> do.call(rbind, lapply(list2, unlist)) # output is an array
     GN.a GN.b GN.c GN.d GN.e GN.f SN1.0 SN1.1 SN1.2 SN2.0 SN2.1 SN2.2
[1,]    1    1    1    1    1    1     4     1     1     3     2     1
[2,]    1    1    1    1    1    1     1     2     2     1     4     2
于 2013-01-17T11:59:27.560 に答える