Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用lappy在数据的滑动窗口上循环?_R - Fatal编程技术网

R 如何使用lappy在数据的滑动窗口上循环?

R 如何使用lappy在数据的滑动窗口上循环?,r,R,如何使用lappy()在多列数据集上“循环”并应用函数?通常,我会使用rollappy(),但出于不值得深入分析的原因,在这种情况下,只有lappy()。我知道如何在扩展窗口上运行函数。但是lappy()如何与滑动窗口一起使用呢?例如,这里有一个手动更改范围的玩具示例,它与一个函数一起工作,我将为多列数据集(dat1)调用该函数: set.seed(78) dat1test.a事实上,可以用rollapply这样做: library(zoo) res <- t(rollapply(t(d

如何使用
lappy()
在多列数据集上“循环”并应用函数?通常,我会使用
rollappy()
,但出于不值得深入分析的原因,在这种情况下,只有
lappy()
。我知道如何在扩展窗口上运行函数。但是
lappy()
如何与滑动窗口一起使用呢?例如,这里有一个手动更改范围的玩具示例,它与一个函数一起工作,我将为多列数据集(
dat1
)调用该函数:

set.seed(78)

dat1
test.a事实上,可以用
rollapply
这样做:

library(zoo)

res <- t(rollapply(t(dat1), 10, function(x) my_fun(t(x)), by.column = FALSE))

# verify that res[, i] equals test.i for i = 1,2,3
all.equal(res[, 1], test.1)
## [1] TRUE
all.equal(res[, 2], test.2)
## [1] TRUE
all.equal(res[, 3], test.3)
## [1] TRUE
图书馆(动物园)

res请查看并为
my_fun
提供一个特定的函数,为
dat
提供一个值,以捕获问题的本质。使用示例数据编辑Eric,这基本上就是我正在寻找的解决方案--谢谢。既然你已经给出了答案,这是显而易见的。显然,我在这里有点大脑紧锁。顺便说一句,G.Grothendieck的代码也可以工作,但不适用于这种特定情况,这是因为我使用的函数有些独特。
test.a <-lapply(seq(10, 12), function(x) my_fun(dat1[1:x]))
test.a <-lapply(seq(1, 3), function(x) my_fun(dat1[x:(x+9)]))
library(zoo)

res <- t(rollapply(t(dat1), 10, function(x) my_fun(t(x)), by.column = FALSE))

# verify that res[, i] equals test.i for i = 1,2,3
all.equal(res[, 1], test.1)
## [1] TRUE
all.equal(res[, 2], test.2)
## [1] TRUE
all.equal(res[, 3], test.3)
## [1] TRUE