减去不等矩阵,输出为列表r

时间:2013-07-11 22:18:16

标签: r list matrix subtraction

我有这些矩阵 答:

           A     B     C     D     E     F     G
Obs.1     22   140     0     9     7     0     2
Obs.2    453    53    11   124   356    57    13
Obs.3    406   114    15   145   158    44     2
Obs.4    553   128   137   233  1010   194     7
Obs.5     82    29    15    42    42    23     5
Obs.6    110    88    14    28    88     8     2

和B:

       A     B     C     D     E     F     G
01   186   152    47   173   117    66    13
02   191   197    41   112   123    53     8
03   274   371    28    91    94    39    10
04   320   431    14    93   109    42     9
05   100   250     3    21    25     6     6
06   208   160     3    60   128    19     8
07   291   130    14    96   175    43     8
08   385   135    61   164   436   106     6
09   109    54    20    47   114    31     6
10   101   115    11    30    62    15     9
11   103   123     4    15    17     5    13
12   146   105    23    75    48    30     9

我希望每次观察得到A和B之间的差异,即得到像这样的矩阵A到G的列表:

$A
        01    02    03    04   05    06    07   08   09   10   11   12
Obs.1 -164  -169  -252  -298  -78  -186  -269 -363  -87  -79  -81 -124
Obs.2  267   262   179   133  353   245   162   68  344  352  350  307
Obs.3  220   215   132    86  306   198   115   21  297  305  303  260
etc.

我认为我应该使用其中一个apply函数,但是我无法以正确的方式获得数据结构。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

AB属于data.frame类:

L <- lapply(LETTERS[1:7], function(x) outer(A[[x]],B[[x]], '-'))
names(L) <- LETTERS[1:7]
L
## $A
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## [1,] -164 -169 -252 -298  -78 -186 -269 -363  -87   -79   -81  -124
## [2,]  267  262  179  133  353  245  162   68  344   352   350   307

...

##     $G
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## [1,]  -11   -6   -8   -7   -4   -6   -6   -4   -4    -7   -11    -7
## [2,]    0    5    3    4    7    5    5    7    7     4     0     4
## [3,]  -11   -6   -8   -7   -4   -6   -6   -4   -4    -7   -11    -7
## [4,]   -6   -1   -3   -2    1   -1   -1    1    1    -2    -6    -2
## [5,]   -8   -3   -5   -4   -1   -3   -3   -1   -1    -4    -8    -4
## [6,]  -11   -6   -8   -7   -4   -6   -6   -4   -4    -7   -11    -7