Why not use standard matrix multiplication which is straightforward here:
x %*% diag(1/s)
HTH,
Eric
On Wed, Mar 3, 2021 at 7:13 AM Harold Doran <
harold.doran at cambiumassessment.com> wrote:
> 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.
>
> ______________________________________________
> 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.
>
[[alternative HTML version deleted]]