Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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
不明白rollapply在做什么_R_Zoo - Fatal编程技术网

不明白rollapply在做什么

不明白rollapply在做什么,r,zoo,R,Zoo,我没有看到z和rollappy()函数调用之间的联系。我的假设是,我有一个向量,两个长(1:2),覆盖在z内的每个观测值上,通过我的函数和聚集 z中的第一个号码是1,我呼叫的第一个号码也是1。好的,有道理,1和0的和就是1 z中的第二个实例是2,rollapply中的第二个结果是5。我可以看到z中第二个和第三个项目的总和是5,但如果是这样,那么rollapply的第三个结果不是3+4=7,而是3。第三种情况下,我的rollapply调用如何返回3 r到底在这里干什么 窗口的宽度在1和2之间交替。

我没有看到z和rollappy()函数调用之间的联系。我的假设是,我有一个向量,两个长(1:2),覆盖在z内的每个观测值上,通过我的函数和聚集

z中的第一个号码是1,我呼叫的第一个号码也是1。好的,有道理,1和0的和就是1

z中的第二个实例是2,rollapply中的第二个结果是5。我可以看到z中第二个和第三个项目的总和是5,但如果是这样,那么rollapply的第三个结果不是3+4=7,而是3。第三种情况下,我的rollapply调用如何返回3


r到底在这里干什么

窗口的宽度在1和2之间交替。结果是1,然后是2+3,然后是3,然后是4+5,然后是5

下面是窗口宽度为1(第1列)和窗口宽度为2(第2列)的
rollappy
输出。你可以看到它只是在这两者之间交替出现

rollapply(z, 1:2, sum, align = "left")
1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
         1          5          3          9          5 
如果两者都需要,并且希望保留属性,可以使用
lappy

sapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    5
# [3,]    3    7
# [4,]    4    9
# [5,]    5   NA
lapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))

# [[1]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          1          2          3          4          5 
# 
# [[2]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          3          5          7          9         NA
如果将较大的向量作为第二个参数提供给
rollapply

sapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    5
# [3,]    3    7
# [4,]    4    9
# [5,]    5   NA
lapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))

# [[1]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          1          2          3          4          5 
# 
# [[2]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          3          5          7          9         NA

窗口的宽度在1和2之间交替。结果是1,然后是2+3,然后是3,然后是4+5,然后是5

下面是窗口宽度为1(第1列)和窗口宽度为2(第2列)的
rollappy
输出。你可以看到它只是在这两者之间交替出现

rollapply(z, 1:2, sum, align = "left")
1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
         1          5          3          9          5 
如果两者都需要,并且希望保留属性,可以使用
lappy

sapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    5
# [3,]    3    7
# [4,]    4    9
# [5,]    5   NA
lapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))

# [[1]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          1          2          3          4          5 
# 
# [[2]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          3          5          7          9         NA
如果将较大的向量作为第二个参数提供给
rollapply

sapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    5
# [3,]    3    7
# [4,]    4    9
# [5,]    5   NA
lapply(1:2, function(w) rollapply(z, w, sum, align = 'left', fill = NA))

# [[1]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          1          2          3          4          5 
# 
# [[2]]
# 1970-01-01 1970-01-02 1970-01-03 1970-01-04 1970-01-05 
#          3          5          7          9         NA