8
votes

Array: Soustrait par ligne

Comment puis-je soustraire un vecteur de chaque ligne dans un tableau?

, , 1

      [,1] [,2]
[1,]    0   -2
[2,]    1   -1

, , 2

      [,1] [,2]
[1,]    4    2
[2,]    5    3

r

0 commentaires

4 Réponses :


1
votes
> 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

1 commentaires

Merci pour votre réponse, n'y a-t-il aucun moyen de passer par-dessus un tableau par la ligne?



16
votes

Utilisez balayage code> pour fonctionner sur une marge particulière de la matrice: les lignes sont la deuxième dimension (marge).

sweep(a,MARGIN=2,c(1,5),FUN="-")


0 commentaires

4
votes
> 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

1 commentaires

merci pour cette solution aussi, c'est exactement ce que je cherche aussi bien



3
votes

Utilisez échelle pour soustraire la moyenne ou un vecteur spécifié de chaque ligne, puis divisez-le soit par l'écart type ou un vecteur spécifié.

Pour votre exemple: échelle (a, c (1,5), false)


0 commentaires