Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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
关于zoo::rollapply的几个问题_R_Rollapply - Fatal编程技术网

关于zoo::rollapply的几个问题

关于zoo::rollapply的几个问题,r,rollapply,R,Rollapply,我对rollapply的width选项的理解是,它指定函数将在其上运行的窗口大小,而by选项指定此窗口的移位大小。这是我的数据集: > dataset <- as.vector(t(cbind(5:1, 1:5))) > dataset [1] 5 1 4 2 3 3 2 4 1 5 如何调试这些类型的*应用族函数错误 2) 在选项中使用大于1的向量的目的是什么?为什么下面的代码在奇数位置输出一个数字,但在奇数位置为w12变量指定两个数字 > w12 <- ro

我对
rollapply
width
选项的理解是,它指定函数将在其上运行的窗口大小,而
by
选项指定此窗口的移位大小。这是我的数据集:

> dataset <- as.vector(t(cbind(5:1, 1:5)))
> dataset
 [1] 5 1 4 2 3 3 2 4 1 5
如何调试这些类型的
*应用
族函数错误

2) 在
选项中使用大于1的向量的目的是什么?为什么下面的代码在奇数位置输出一个数字,但在奇数位置为
w12
变量指定两个数字

> w12 <- rollapply(dataset, width = c(1,2), FUN = print, align="left")
[1] 5
[1] 1 4
[1] 4
[1] 2 3
[1] 3
[1] 3 2
[1] 2
[1] 4 1
[1] 1
> w12
      [,1] [,2]
 [1,]    5    5
 [2,]    1    4
 [3,]    4    4
 [4,]    2    3
 [5,]    3    3
 [6,]    3    2
 [7,]    2    2
 [8,]    4    1
 [9,]    1    1

# SAME AS ABOVE (ACCORDING TO MAN by IS USED ONLY IF width IS OF LENGTH 1)
> w12 <- rollapply(dataset, width = c(1,2), by=10, FUN = print, align="left")
[1] 5
[1] 1 4
[1] 4
[1] 2 3
[1] 3
[1] 3 2
[1] 2
[1] 4 1
[1] 1
> w12
      [,1] [,2]
 [1,]    5    5
 [2,]    1    4
 [3,]    4    4
 [4,]    2    3
 [5,]    3    3
 [6,]    3    2
 [7,]    2    2
 [8,]    4    1
 [9,]    1    1 
4)
by.column
做什么?我希望它与矩阵有关,因此我尝试了以下内容:

> mtrx <- matrix(c(1:30), nrow=10)
> mtrx
      [,1] [,2] [,3]
 [1,]    1   11   21
 [2,]    2   12   22
 [3,]    3   13   23
 [4,]    4   14   24
 [5,]    5   15   25
 [6,]    6   16   26
 [7,]    7   17   27
 [8,]    8   18   28
 [9,]    9   19   29
[10,]   10   20   30

# THIS IS OK
> rollapply(mtrx, width = 2, by = 2, FUN = max, align = "left", by.column=T)
     [,1] [,2] [,3]
[1,]    2   12   22
[2,]    4   14   24
[3,]    6   16   26
[4,]    8   18   28
[5,]   10   20   30

# BUT WHAT IS THIS?
> rollapply(mtrx, width = 2, by = 2, FUN = max, align = "left", by.column=F)
[1] 22 24 26 28 30
>mtrx mtrx
[,1] [,2] [,3]
[1,]    1   11   21
[2,]    2   12   22
[3,]    3   13   23
[4,]    4   14   24
[5,]    5   15   25
[6,]    6   16   26
[7,]    7   17   27
[8,]    8   18   28
[9,]    9   19   29
[10,]   10   20   30
#这没关系
>滚动应用(mtrx,宽度=2,比=2,乐趣=max,align=“left”,比.column=T)
[,1] [,2] [,3]
[1,]    2   12   22
[2,]    4   14   24
[3,]    6   16   26
[4,]    8   18   28
[5,]   10   20   30
#但这是什么?
>滚动应用(mtrx,宽度=2,比=2,乐趣=max,align=“left”,比.column=F)
[1] 22 24 26 28 30
(1)很可能是一个bug

(2) 和(3)在帮助文件中进行了说明:

如果宽度是一个纯数字向量,则其元素被视为宽度 如果宽度是一个列表,则与对齐一起解释 其组件被视为偏移。在上述情况下,如果 宽度的长度为1,则每个点的宽度循环使用。如果 宽度是一个列表,其组件表示整数偏移,因此 列表的第i部分指位置i处的时间点+ 宽度[[i]]。如果这些点中的任何一点小于1或大于 索引(数据)则不针对该点评估FUN,除非部分= 如果为TRUE,则只传递有效点

因此,对于第一个
w12
,指定的
c(1,2)
宽度被循环到
dataset
的长度,以便备用应用程序的宽度为1和2

因此,第一个w12与下面相同,它使用宽度1,然后使用宽度2,然后再使用宽度1,以此类推

rollapply(dataset, c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2), print)
如果为
width
指定了列表,则其组件将被视为偏移而不是宽度。1表示下一个值,2表示下一个值之后的值,-1表示之前的值,依此类推

对于列表示例,它被循环到
列表(1,2,1,2,1,2,1,2,1,2)
因此对于第一个应用程序,它使用下一个值,对于第二个应用程序,它使用下一个值之后的值,对于第三个应用程序,它再次使用下一个值,依此类推

(4)
by.column
在帮助文件中定义:

by.column-逻辑。如果为TRUE,则会将FUN分别应用于每个列

默认值为TRUE,因此默认情况下,它应用于每一列,然后将结果绑定在一起。;否则,所有列将立即传递给函数。

(1)可能是一个错误

(2) 和(3)在帮助文件中进行了说明:

如果宽度是一个纯数字向量,则其元素被视为宽度 如果宽度是一个列表,则与对齐一起解释 其组件被视为偏移。在上述情况下,如果 宽度的长度为1,则每个点的宽度循环使用。如果 宽度是一个列表,其组件表示整数偏移,因此 列表的第i部分指位置i处的时间点+ 宽度[[i]]。如果这些点中的任何一点小于1或大于 索引(数据)则不针对该点评估FUN,除非部分= 如果为TRUE,则只传递有效点

因此,对于第一个
w12
,指定的
c(1,2)
宽度被循环到
dataset
的长度,以便备用应用程序的宽度为1和2

因此,第一个w12与下面相同,它使用宽度1,然后使用宽度2,然后再使用宽度1,以此类推

rollapply(dataset, c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2), print)
如果为
width
指定了列表,则其组件将被视为偏移而不是宽度。1表示下一个值,2表示下一个值之后的值,-1表示之前的值,依此类推

对于列表示例,它被循环到
列表(1,2,1,2,1,2,1,2,1,2)
因此对于第一个应用程序,它使用下一个值,对于第二个应用程序,它使用下一个值之后的值,对于第三个应用程序,它再次使用下一个值,依此类推

(4)
by.column
在帮助文件中定义:

by.column-逻辑。如果为TRUE,则会将FUN分别应用于每个列

默认值为TRUE,因此默认情况下,它应用于每一列,然后将结果绑定在一起。;否则,所有列将立即传递给函数。

1也在工作:

dataset <- as.vector(t(cbind(5:1, 1:5)))
rollapply(dataset, width = 1, by=1, FUN = max, align="left")
[1] 544343445也在工作:

dataset <- as.vector(t(cbind(5:1, 1:5)))
rollapply(dataset, width = 1, by=1, FUN = max, align="left")

[1] 5 4 4 3 3 4 5

你应该试着将你的帖子限制在每个问题上,例如,因为我可以为你的一些问题提供一些提示,但不是所有的问题:1)不确定,但有趣的是,min的工作没有错误;2) 可变窗口;3) 不确定;4) ??; 5) 最后一个例子是给你一个窗口为2的行最大值,所以用最小值或中间值再试一次,看看是什么happens@rawr谢谢你的回复。你能试着进一步解释2,4(在更正前通常是5)作为答案吗?谢谢你。你应该试着把你的帖子限制在每个问题上,例如,因为我可以给你一些提示来回答你的一些问题,但不是所有的问题:1)不确定,但很有趣,min的作品没有错误;2) 可变窗口;3) 不确定;4) ??; 5) 最后一个例子是给你一个窗口为2的行最大值,所以用最小值或中间值再试一次,看看是什么happens@rawr谢谢你的回复。你能试试看吗
dataset <- as.vector(t(cbind(5:1, 1:5)))
rollapply(dataset, width = 1, by=1, FUN = max, align="left")
rollapply(dataset, width = 2, by=1, FUN = max, align="left")