[R] struggling with apply

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Wed May 27 23:43:07 CEST 2020


Yes, that's better --- no looping at the interpreted level.

Another version without transposing is:

nr <- 3
matrix(pmin(c(somematrix),rep(UB, e = nr)), nrow = nr)

Both treat the matrix as a vector stored in column major order.

Cheers,
Bert


On Wed, May 27, 2020 at 1:32 PM Mathew Guilfoyle <mrguilfoyle using gmail.com>
wrote:

> A bit quicker:
>
> t(pmin(t(somematrix), UB))
>
>
>
> On 27 May 2020, at 20:56, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> Jeff: Check it!
>
> somematrix <- matrix(c(1,4,3,6,3,9,12,8,5,7,11,11),nrow=3,ncol=4)
> UB=c(2.5, 5.5, 8.5, 10.5)
> apply( somematrix, 2, function( x ) pmin( x, UB ) )
>
>     [,1] [,2] [,3] [,4]
> [1,]    1  2.5  2.5  2.5
> [2,]    4  3.0  5.5  5.5
> [3,]    3  8.5  5.0  8.5
> [4,]    1  6.0 10.5  7.0
>
> Not what was wanted.
> Am I missing something?
>
> 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 12:38 PM Jeff Newmiller <jdnewmil using dcn.davis.ca.us>
> wrote:
>
> 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.
>
>
> [[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
> <http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list