我有这些矩阵 答:
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函数,但是我无法以正确的方式获得数据结构。非常感谢任何帮助。
答案 0 :(得分:4)
A
和B
属于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