使用last()时R xts - 下标超出范围

时间:2017-04-06 02:43:02

标签: r xts

我在R中的xts包中使用last()函数时发现了一个奇怪的错误。

我有一个dim 740 * 1的xts对象,但是last(data,1)返回错误:

> tail(data)
            [,1]
2017-02-28 2.092
2017-03-01 2.093
2017-03-02    NA
2017-03-03    NA
2017-03-06    NA
2017-03-07    NA
> dim(data)
[1] 740   1
> last(data,1)
Error in x[[order(order_by)[n]]] : subscript out of bounds

你能帮我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

当函数被另一个也在R会话中加载的包中的相同函数名掩盖时,就会发生这种情况。

dplyr::last(data, 1)
  

x [[order(order_by)[n]]]中的错误:下标越界

last(data, 1)
#         [,1]
#2017-04-11    5

在上面,dplyr lastxts::last掩盖了,所以在这种情况下它运行良好。根据加载包的顺序(这里我们在xts之后加载dplyr)可能会发生这种情况。假设,我们在dplyr之后加载xts进行了新的R会话,反之亦然

library(xts)
#Loading required package: zoo

#Attaching package: ‘zoo’

#The following objects are masked from ‘package:base’:

#as.Date, as.Date.numeric

library(dplyr)

#Attaching package: ‘dplyr’

#The following objects are masked from ‘package:xts’:

#first, last   ####note this line


data <- xts(1:5, order.by = Sys.Date()+1:5)
last(data, 1)
  

x [[order(order_by)[n]]]中的错误:下标越界

此处,选项是使用::

xts::last(data, 1)
#           [,1]
#2017-04-11    5

数据

data <- xts(1:5, order.by = Sys.Date()+1:5)