[R] struggling with apply
Michael Ashton
m@@@hton @end|ng |rom endur|ng|nve@tment@@com
Wed May 27 22:45:09 CEST 2020
This is like "Name that Tune." Can anyone do it in FEWER characters? :-)
On May 27, 2020, at 4: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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