Re: [Rd] arr.ind argument to which.min and which.max

From: Henrik Bengtsson <hb_at_stat.berkeley.edu>
Date: Mon, 05 Jul 2010 22:49:49 +0200

For what it's worth, see arrayIndex() in R.utils, e.g.

# Single index
print(arrayIndex(21, dim=c(4,3,3)))

# Multiple indices
print(arrayIndex(20:23, dim=c(4,3,3)))

# Whole array
x <- array(1:30, dim=c(5,6))
print(arrayIndex(1:length(x), dim=dim(x)))

# Find (row,column) of maximum value
m <- diag(4-abs(-4:4))
print(arrayIndex(which.max(m), dim=dim(m)))

/Henrik

On Mon, Jul 5, 2010 at 8:27 PM, Patrick Burns <pburns_at_pburns.seanet.com> wrote:
> On 05/07/2010 10:56, Martin Maechler wrote:

>>>>>>>
>>>>>>> "PatB" == Patrick Burns<pburns_at_pburns.seanet.com>
>>>>>>>     on Sun, 04 Jul 2010 09:43:44 +0100 writes:
>>
>>     PatB>  Is there a reason that 'which.min' and
>>     PatB>  'which.max' don't have an 'arr.ind'
>>     PatB>  argument?
>>
>> well,  help(which.min)  tells you that they really were aimed at
>> doing their job *fast* for vectors.
>>
>> Of course you are right and a generalization to arrays might be
>> convenient at times.
>>
>>     PatB>  The context in which I wanted that was
>>     PatB>  a grid search optimization, which seems
>>     PatB>  like it would be reasonably common to me.
>>
>> well, as the author of these two functions, I can only say
>>
>>       "patches are welcome!"
>>
>> and I think should be pretty simple, right ?
>> You just have to do very simple remapping of the 1d index 'i' back
>> to the array index, i.e., the same operation
>> you need to transform seconds into days:hours:minutes:seconds
>> {{and yes, we old-timers may recall that APL had an operator (I
>>   think "T-bar") to do that ...}
>

> I think the exercise is just to copy the definition of
> 'which' and add four characters.
>

> If the order of the if condition were reversed, then
> possibly the slight reduction in speed of 'which.min'
> and 'which.max' would be more than made up for in the
> slight increase in speed of 'which'.
>

> Pat
>
>>
>> Martin Maechler, ETH Zurich
>>
>>
>>     PatB>  --
>>     PatB>  Patrick Burns
>>     PatB>  pburns_at_pburns.seanet.com
>>     PatB>  http://www.burns-stat.com
>>     PatB>  (home of 'Some hints for the R beginner'
>>     PatB>  and 'The R Inferno')
>>
>

> --
> Patrick Burns
> pburns_at_pburns.seanet.com
> http://www.burns-stat.com
> (home of 'Some hints for the R beginner'
> and 'The R Inferno')
>

> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon 05 Jul 2010 - 20:52:24 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 06 Jul 2010 - 00:00:11 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive