我需要提取向量的最后3行,并将结果存储在一个列表中,列表的每个部分最多包含3个元素。在此之后,我可以将结果排列在一个矩阵中。
下一个例子是:
data <- c(130,156,872,23,67,98,104)假设我需要的最后3行数据帧的每个条目
我需要这样的结果
[1]
130
[2]
130 156
[3]
130 156 872
[4]
156 872 23
[5]
872 23 67诸若此类。问题是:我不能像我想的那样使用lapply,因为没有像预期的那样产生结果。
我确信这是一个相当简单的问题,但我无法找到解决它的方法,而且我对此感到非常沮丧。
1和2可以看起来像NA 130的1和NA 130 156的2。
如果我需要更精确地回答我的问题,我会给出更详细的解释。
发布于 2017-07-10 20:28:30
使用lapply一次遍历沿data和子集的三个连续元素的索引
lapply(1:length(data), function(i) data[max(1, (i-2)):i])
#[[1]]
#[1] 130
#[[2]]
#[1] 130 156
#[[3]]
#[1] 130 156 872
#[[4]]
#[1] 156 872 23
#[[5]]
#[1] 872 23 67
#[[6]]
#[1] 23 67 98
#[[7]]
#[1] 67 98 104发布于 2017-07-10 22:23:00
您还可以从包rollApply中使用rowr
rowr::rollApply(data, fun=c, window=3, align="right")
[[1]]
[1] 130
[[2]]
[1] 130 156
[[3]]
[1] 130 156 872
[[4]]
[1] 156 872 23
[[5]]
[1] 872 23 67
[[6]]
[1] 23 67 98
[[7]]
[1] 67 98 104https://stackoverflow.com/questions/45020867
复制相似问题