2016-01-21 51 views
0

假設我有一個數字向量vec,我想從中提取幾個遍佈全部的序列seq的實例。已知序列的起始索引vec。例:從矢量中提取幾個序列實例

seq <- c(6, 4, 9) 
vec <- c(6, 6, 4, 9, 9, 6, 4, 9, 5, 6, 6, 4, 9, 6, 4) 
seq_index <- c(2, 6, 11) 

我想獲得成纔是這樣的:

6, 6, 6 
4, 4, 4 
9, 9, 9 

什麼顯然是行不通的是:

vec[seq_index:seq_index + length(seq) - 1] 

我也與家庭應用發揮各地的功能,例如

lapply(X = vec, FUN = `[`, cbind(seq_index, seq_index + length(seq) - 1)) 

這也沒有產生預期的結果。 我相信我錯過了一些基本的東西,但無法弄清楚。
任何指針將不勝感激。

+1

不應該使用'seq'作爲名字爲載體,給它的R中 – mtoto

回答

1

也許你的意思是這樣的:

sapply(seq_index, function(i) vec[i:(i+length(seq)-1)]) 
#  [,1] [,2] [,3] 
#[1,] 6 6 6 
#[2,] 4 4 4 
#[3,] 9 9 9 
+0

大基本功能!我有一個模糊的想法,認爲匿名函數與lapply結合是一條路,但從未理解這些工作是如何進行的,所以我假設我現在避免進一步研究它。對我感到羞恥!再次感謝。 – mgrossbach