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.