Skip to content
Prev 387315 / 398502 Next

Column-by-column division

To make sure the scalar is used instead of using the recycled vector s, maybe like this 

x <- matrix(1:20, nrow=10)
s <- c(1,2)
sapply(1:2, function(i) x[,i]/s[i])

-----Original Message-----
From: R-help <r-help-bounces at r-project.org> On Behalf Of Steven Yen
Sent: Wednesday, March 3, 2021 6:00 AM
To: R-help Mailing List <r-help at r-project.org>
Subject: [R] Column-by-column division

I have a 10 x 2 matrix x. Like to divide the first column by s[1] and second column by s[2]. The following lines work but are clumsy. Any idea? Thanks.

 > x
 ????? [,1] [,2]
 ?[1,]??? 1?? 11
 ?[2,]??? 2?? 12
 ?[3,]??? 3?? 13
 ?[4,]??? 4?? 14
 ?[5,]??? 5?? 15
 ?[6,]??? 6?? 16
 ?[7,]??? 7?? 17
 ?[8,]??? 8?? 18
 ?[9,]??? 9?? 19
[10,]?? 10?? 20
 > s
[1] 1 2
 > t(t(x)/s)
 ????? [,1] [,2]
 ?[1,]??? 1? 5.5
 ?[2,]??? 2? 6.0
 ?[3,]??? 3? 6.5
 ?[4,]??? 4? 7.0
 ?[5,]??? 5? 7.5
 ?[6,]??? 6? 8.0
 ?[7,]??? 7? 8.5
 ?[8,]??? 8? 9.0
 ?[9,]??? 9? 9.5
[10,]?? 10 10.0

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.