[R] Recursive indexing failed at level 2
Jim Hargreaves
james at ipec.co.uk
Sat Jun 26 15:01:16 CEST 2010
Hi Duncan, list,
Thanks for the advice, but unfortunately that wasn't what was causing my
problem. I'm still getting the "Recursive indexing failed at level 2"
message even after replacing my unlist(pulse[i]) with pulse[[i]].
Error:
>
pulse_subset[[1:as.numeric(length(pulse[[i]][as.numeric(peak_start[i]):as.numeric(peak_end[i])]))]]
<- pulse[[i]][as.numeric(peak_start[i]):as.numeric(peak_end[i])]
Error in
pulse_subset[[1:as.numeric(length(pulse[[i]][as.numeric(peak_start[i]):as.numeric(peak_end[i])]))]]
<- pulse[[i]][as.numeric(peak_start[i]):as.numeric(peak_end[i])] :
recursive indexing failed at level 2
It's almost as if the length of pulse[[i]] is too small, but it's length
is 1001 and peak_start[i] and peak_end[i] are 192 and 208 respectively.
Also why would the problem crop up only after 200,000 runs?
Bizarre!
Regards,
Jim Hargreaves
On 06/26/2010 01:38 PM, Duncan Murdoch wrote:
> On 26/06/2010 8:29 AM, Jim Hargreaves wrote:
>> On 06/26/2010 01:20 PM, Duncan Murdoch wrote:
>>> On 26/06/2010 7:53 AM, Jim Hargreaves wrote:
>>>> Dear fellow R users,
>>>>
>>>> I am replacing elements of a list like so:
>>>>
>>>> pulse_subset[[1:20]]=unlist(pulse[i])[1:20]
>>> If pulse is a list, then pulse[i] is also a list, with one element.
>>> I think you want pulse[[i]], which extracts element i.
>> Ahh, I specified pulse[i] has >20 values in my original mail.
> But that could not be correct. Take a look at length(pulse[i]).
> Assuming that i is a scalar value, length(pulse[i]) will be 1. You
> really do want pulse[[i]]. You used unlist(pulse[i]) which is
> sometimes the same as pulse[[i]], but it really depends on what
> pulse[[i]] is. unlist() is a very crude tool, and you should avoid it
> unless you really need it.
>
>
>> Basically pulse is a list 1000 elements long, with each element in
>> pulse having between 1000 and 2000 elements of it's own. Pulse is a
>> list of lists. Also as far as I am aware, [[ ]]'s should only be
>> used when assigning values to elements of a list/vector.
>
> Whoever told you that was mistaken.
>
> Duncan Murdoch
>> unlist(pulse[1]) gives x1, x2, x3, x4, x5 etc. etc.
>>> If pulse_subset is a list, then pulse_subset[[1:20]] is equivalent
>>> to pulse_subset[[1]][[2]][[3]][[4]] ... [[20]], i.e. the syntax
>>> implies that it is a list containing a list etc, nested 20 levels
>>> deep. The error message is telling you that it's not. I'm not sure
>>> what your intention is in this case.
>>> Duncan Murdoch
>>>> where pulse is a list of lists, and pulse [i] has >20 values.
>>>>
>>>> This gives the error "Recursive Indexing failed at level 2". But,
>>>> interestingly this instruction is part of a loop which has gone
>>>> through about 200,000 iterations before giving this error.
>>>>
>>>> Actual code:
>>>>
>>>> pulse_subset[[1:(length(unlist(pulse[i])[as.numeric(peak_start[i]):as.numeric(peak_end[i])]))]]
>>>> <- unlist(pulse[i])[as.numeric(peak_start[i]):as.numeric(peak_end[i])]
>>>>
>>>> Error in
>>>> pulse_subset[[1:(length(unlist(pulse[i])[as.numeric(peak_start[i]):as.numeric(peak_end[i])]))]]
>>>> <-
>>>> unlist(pulse[i])[as.numeric(peak_start[i]):as.numeric(peak_end[i])] :
>>>> recursive indexing failed at level 2
>>>>
>>>> If anyone could shed some light I'd be rather grateful.
>>>>
>>>> Regards,
>>>> Jim Hargreaves
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> 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 at r-project.org mailing list
>> 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.
>
More information about the R-help
mailing list