# [R] Recursive indexing failed at level 2

Duncan Murdoch murdoch.duncan at gmail.com
Sat Jun 26 14:38:45 CEST 2010

```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
>>> 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
> and provide commented, minimal, self-contained, reproducible code.
>

```