Rac*_*wal 47 r list vector append sapply
我有一个数字向量列表,我想将它们组合成一个向量.但我无法做到这一点.该列表可以在列表元素中具有一个共同的元素.最终的矢量不应该添加两次.这是一个例子:
>lst
`1`
[1] 1 2
`2`
[2] 2 4 5
`3`
[3] 5 9 1
Run Code Online (Sandbox Code Playgroud)
我想要最终结果
>result
[1] 1 2 4 5 9 1
Run Code Online (Sandbox Code Playgroud)
我试着做以下事情,而不用担心重复:
>vec<-vector()
>sapply(lst, append,vec)
Run Code Online (Sandbox Code Playgroud)
和
>vec<-vector()
>sapply(lst, c, vec)
Run Code Online (Sandbox Code Playgroud)
他们都没有工作.有人可以帮我吗?
谢谢.
Rac*_*wal 46
比上面提出的解决方案更快的解决方案:
vec<-unlist(lst)
vec[which(c(1,diff(vec)) != 0)]
Run Code Online (Sandbox Code Playgroud)
Pau*_*eux 17
另一个答案用Reduce().
创建向量列表:
lst <- list(c(1,2),c(2,4,5),c(5,9,1))
Run Code Online (Sandbox Code Playgroud)
将它们组合成一个向量
vec <- Reduce(c,lst)
vec
# [1] 1 2 2 4 5 5 9 1
Run Code Online (Sandbox Code Playgroud)
保留重复的一次:
unique(Reduce(c,lst))
#[1] 1 2 4 5 9
Run Code Online (Sandbox Code Playgroud)
如果你想在最后保留重复的那个,你可能想要vec[which(c(1,diff(vec)) != 0)]在@ Rachid的答案中使用
你想要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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44842 次 |
| 最近记录: |