如果有一个向量x与
length(x)
# 100
Run Code Online (Sandbox Code Playgroud)
还有一个向量a,表示 x 的子向量的前导索引:
a
# 1, 5, 23, 79
Run Code Online (Sandbox Code Playgroud)
然后我想分裂x根据a如下:
list(x[1:4], x[5:22], x[23:78], x[79:100])
Run Code Online (Sandbox Code Playgroud)
在 R 中有没有一种快速的方法来做到这一点?
前面的两个答案都依赖于制作与原始x向量长度相同的用于拆分的列表/向量。在非常长的向量的情况下,这可能效率低下,可以避免:
Map(function(i,j) x[i:j], a, cumsum(diff(c(a, length(x)+1))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |