[R] struggling with apply

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Wed May 27 21:38:21 CEST 2020


Sigh. Transpose?

apply( somematrix, 2, function( x ) pmin( x, UB ) )

On May 27, 2020 11:22:06 AM PDT, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>Better, I think (no indexing):
>
>t(apply(somematrix,1,function(x)pmin(x,UB)))
>
>
>Bert Gunter
>
>"The trouble with having an open mind is that people keep coming along
>and
>sticking things into it."
>-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
>On Wed, May 27, 2020 at 10:56 AM Rui Barradas <ruipbarradas using sapo.pt>
>wrote:
>
>> Hello,
>>
>> Try pmin. And loop by column/UB index with sapply/seq_along.
>>
>>
>> sapply(seq_along(UB), function(i) pmin(UB[i], somematrix[,i]))
>> #     [,1] [,2] [,3] [,4]
>> #[1,]  1.0  5.5  8.5  7.0
>> #[2,]  2.5  3.0  8.0 10.5
>> #[3,]  2.5  5.5  5.0 10.5
>>
>>
>> Hope this helps,
>>
>> Rui Barradas
>>
>>
>> Às 18:46 de 27/05/20, Michael Ashton escreveu:
>> > 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.
>> >
>>
>> ______________________________________________
>> 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.
>>
>
>	[[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