which(is.na(xtsSeries)) returns 值越界
which(is.na(xtsSeries)) returns out of bounds values
我在 xts 对象中有一些时间序列,尺寸为 54 * 5。我想知道哪些行包含 NA。调用 which(is.na(.))
给我的值大于 54(即:85、108、..)。我不明白这些价值观是什么?
> typeof(dataXtsW)
[1] "double"
> class(dataXtsW)
[1] "xts" "zoo"
> dim(dataXtsW)
[1] 54 5
> which(is.na(dataXtsW))
[1] 54 85 108 162 216
> dataXtsW[85]
Error in `[.xts`(dataXtsW, 85) : subscript out of bounds
> dataXtsW[85,]
Error in `[.xts`(dataXtsW, 85, ) : subscript out of bounds
> dataXtsW[54,]
NWHLNYHL Index LUHYTOBS Index SUM INX Index PCUSEQTR Index VIX Index
2017-04-21 NA NA NA NA 0.1305778
在您的示例中,which()
会将数据视为长度为 54*5 的向量。矩阵中的数据是逐列存储的,所以元素54是第一列的最后一个元素,108是第二列的最后一个元素等等
如果您使用which( , arr.ind = TRUE)
,您将获得 NA 元素的数组索引(行,列)。
如果您想知道哪些行包含 NA
,您可以使用
来查找
which(apply(dataXtsW, MARGIN = 1, FUN = function(x) any(is.na(x))))
在每一行 (MARGIN = 1
) 中检查 NA
个值 (any(is.na(x)))
)。如果您使用 which(is.na(dataXtsW))
,它 returns 数据框 NA
元素的索引(不是行!)。索引指的是按列排序的元素。在您的例子中,第 54 个元素是 NA
。您可以使用
进行检查
unlist(dataXtsW)[54]
我在 xts 对象中有一些时间序列,尺寸为 54 * 5。我想知道哪些行包含 NA。调用 which(is.na(.))
给我的值大于 54(即:85、108、..)。我不明白这些价值观是什么?
> typeof(dataXtsW)
[1] "double"
> class(dataXtsW)
[1] "xts" "zoo"
> dim(dataXtsW)
[1] 54 5
> which(is.na(dataXtsW))
[1] 54 85 108 162 216
> dataXtsW[85]
Error in `[.xts`(dataXtsW, 85) : subscript out of bounds
> dataXtsW[85,]
Error in `[.xts`(dataXtsW, 85, ) : subscript out of bounds
> dataXtsW[54,]
NWHLNYHL Index LUHYTOBS Index SUM INX Index PCUSEQTR Index VIX Index
2017-04-21 NA NA NA NA 0.1305778
在您的示例中,which()
会将数据视为长度为 54*5 的向量。矩阵中的数据是逐列存储的,所以元素54是第一列的最后一个元素,108是第二列的最后一个元素等等
如果您使用which( , arr.ind = TRUE)
,您将获得 NA 元素的数组索引(行,列)。
如果您想知道哪些行包含 NA
,您可以使用
which(apply(dataXtsW, MARGIN = 1, FUN = function(x) any(is.na(x))))
在每一行 (MARGIN = 1
) 中检查 NA
个值 (any(is.na(x)))
)。如果您使用 which(is.na(dataXtsW))
,它 returns 数据框 NA
元素的索引(不是行!)。索引指的是按列排序的元素。在您的例子中,第 54 个元素是 NA
。您可以使用
unlist(dataXtsW)[54]