我有一个向量V<-1:10
,
我想多次选择V的三个元素。
例如
我将第一次选择第一个三元素a[1:3]
,
第二次,我想选择a[2:4]
,
第三次a[7:9]
输出将是
[1,] 2 3 8
[2,] 3 4 9
[3,] 4 5 10
要做的任何技巧都要快,如果我多次重复这个子设置过程,它真的很慢。或者如何使用apply函数族来解决这些问题。我目前的解决方案是
Index <- function(id, DM) DM[id]
Metrix <- apply(b,2,Index, a)
其中b如下:
[1,] 1 2 7
[2,] 2 3 8
[3,] 3 4 9
有人可以使用内置函数而不是我自己的索引函数。
答案 0 :(得分:1)
您可以使用rollapply
包中的zoo
。
zoo::rollapply(a, 3, FUN=identity)
当然,如果要使用这些值来计算特定的内容,可以指定不同的函数。
zoo::rollapply(a, 3, FUN=paste0, collapse='.')
zoo::rollapply(a, 3, FUN=function(x) x[3] - x[2] - x[1])