[R] struggling with apply

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Wed May 27 19:47:57 CEST 2020


Use the pmin function, not min, for this purpose.

On May 27, 2020 10:46:13 AM PDT, Michael Ashton <m.ashton using enduringinvestments.com> wrote:
>Hi -
>
>I have a matrix of n rows and 4 columns.
>
>I want to cap the value in each column by a different upper bound. So,
>suppose my matrix is
>
>somematrix <- matrix(c(1,4,3,6,3,9,12,8,5,7,11,11),nrow=3,ncol=4)
>> somematrix
>     [,1] [,2] [,3] [,4]
>[1,]    1    6   12    7
>[2,]    4    3    8   11
>[3,]    3    9    5   11
>
>Now I want to have the maximum value in each column described by
>UB=c(2.5, 5.5, 8.5, 10.5)
>
>So that the right answer will look like:
>     [,1]      [,2]    [,3]   [,4]
>[1,]    1      5.5     8.5    7
>[2,]    2.5    3        8     10.5
>[3,]    2.5   5.5      5    10.5
>
>I've tried a few things, like:
>newmatrix <- apply(somematrix,c(1,2),function(x) min(UB,x))
>
>but I can't figure out to apply the relevant element of the UB list to
>the right element of the matrix. When I run the above, for example, it
>takes min(UB,x) over all UB, so I get:
>
>newmatrix
>     [,1] [,2] [,3] [,4]
>[1,]  1.0  2.5  2.5  2.5
>[2,]  2.5  2.5  2.5  2.5
>[3,]  2.5  2.5  2.5  2.5
>
>I'm sure there's a simple and elegant solution but I don't know what it
>is!
>
>Thanks in advance,
>
>Mike
>
>Michael Ashton, CFA
>Managing Principal
>
>Enduring Investments LLC
>W: 973.457.4602
>C: 551.655.8006
>Schedule a Call: https://calendly.com/m-ashton
>
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help using 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.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list