如何减去数组中每行的向量?
a <- array(1:8, dim=c(2,2,2))
a
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
使用apply给我:
apply(a,c(1,2), '-',c(1,5))
, , 1
[,1] [,2]
[1,] 0 1
[2,] 0 1
, , 2
[,1] [,2]
[1,] 2 3
[2,] 2 3
我想要的是:
, , 1
[,1] [,2]
[1,] 0 -2
[2,] 1 -1
, , 2
[,1] [,2]
[1,] 4 2
[2,] 5 3
提前感谢任何提示
答案 0 :(得分:15)
使用sweep
对数组的特定边距进行操作:行是第二维(边距)。
sweep(a,MARGIN=2,c(1,5),FUN="-")
答案 1 :(得分:4)
> library (plyr)
> aaply(a, 1, "-", c(1,5) )
, , = 1
X1 1 2
1 0 -2
2 1 -1
, , = 2
X1 1 2
1 4 2
2 5 3
答案 2 :(得分:3)
使用scale
从每行中减去平均值或指定的矢量,然后将其除以标准偏差或指定的矢量。
对于你的例子:
scale(a, c(1,5), FALSE)
答案 3 :(得分:1)
> a - rep(c(1,5),each=2)
, , 1
[,1] [,2]
[1,] 0 -2
[2,] 1 -1
, , 2
[,1] [,2]
[1,] 4 2
[2,] 5 3