[R] struggling with apply
Mathew Guilfoyle
mrgu|||oy|e @end|ng |rom gm@||@com
Wed May 27 22:32:34 CEST 2020
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 <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>
>> 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 <mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help <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