valores una sumar reemplazar recursividad posiciones pares las impares elementos columna cambiar buscar arreglos arreglo r list recursion subset

una - sumar elementos de un vector en r



Reemplace todos los valores de una lista recursiva con valores de un vector (2)

Puedes usar relist :

relist(seq_along(unlist(rec_list)), skeleton = rec_list) # [[1]] # [[1]][[1]] # [1] 1 2 3 4 5 # # [[1]][[2]] # [1] 6 # # # [[2]] # [[2]][[1]] # [1] 7 8 9 10 # # [[2]][[2]] # [1] 11 12 13 14 15 16

Oye, tengo la siguiente lista recursiva:

rec_list <- list(list(rep(1,5), 10), list(rep(100, 4), 20:25)) rec_list [[1]] [[1]][[1]] [1] 1 1 1 1 1 [[1]][[2]] [1] 10 [[2]] [[2]][[1]] [1] 100 100 100 100 [[2]][[2]] [1] 20 21 22 23 24 25

Ahora, me gustaría reemplazar todos los valores de la lista, por ejemplo, con el vector seq_along(unlist(rec_list)) , y mantener la estructura de la lista. Traté de usar el índice vacío subconjunto como

rec_list[] <- seq_along(unlist(rec_list))

Pero esto no funciona.

¿Cómo puedo lograr el reemplazo manteniendo la estructura original de la lista?


Si desea indexar de forma única cada elemento de una lista anidada, puede comenzar con la función rapply() que es la forma recursiva de la familia apply() . Aquí utilizo una función especial que puede indexar de forma única en una lista de cualquier estructura

rapply(rec_list, local({i<-0; function(x) {i<<-i+length(x); i+seq_along(x)-length(x)}}), how="replace")

otras funciones son más simples, por ejemplo, si solo desea seleccionar a lo largo de cada subvector

rapply(rec_list, seq_along, how="replace")