vacio - listas en r
R+combina una lista de vectores en un solo vector (4)
Otra respuesta usando Reduce()
.
Crea la lista de vectores:
lst <- list(c(1,2),c(2,4,5),c(5,9,1))
Combínalos en un vector
vec <- Reduce(c,lst)
vec
# [1] 1 2 2 4 5 5 9 1
Mantenga los repetidos solo una vez:
unique(Reduce(c,lst))
#[1] 1 2 4 5 9
Si desea mantener ese repetido al final, puede usar vec[which(c(1,diff(vec)) != 0)]
como en la respuesta de @Rachid
Tengo una lista única de vector numérico y quiero combinarlos en un vector. Pero no puedo hacer eso. Esta lista puede tener un elemento común en todo el elemento de la lista. El vector final no debería agregarlos dos veces. Aquí hay un ejemplo:
>lst
`1`
[1] 1 2
`2`
[2] 2 4 5
`3`
[3] 5 9 1
Quiero el resultado final ya que
>result
[1] 1 2 4 5 9 1
Intenté hacer lo siguiente, sin preocuparme por la repetición:
>vec<-vector()
>sapply(lst, append,vec)
y
>vec<-vector()
>sapply(lst, c, vec)
Ninguno de ellos funcionó. ¿Alguien me puede ayudar en esto?
Gracias.
Quieres rle:
rle(unlist(lst))$values
> lst <- list(`1`=1:2, `2`=c(2,4,5), `3`=c(5,9,1))
> rle(unlist(lst))$values
## 11 21 22 31 32 33
## 1 2 4 5 9 1
Una solución que es más rápida que la propuesta arriba:
vec<-unlist(lst)
vec[which(c(1,diff(vec)) != 0)]
Esto es más rápido que el propuesto anteriormente.
stack hará esto muy bien también, y se ve más conciso:
stack(lst)$values