3

这可能是一个愚蠢的问题,但我无法快速找到答案,而且我很好奇即使迟到也不能放弃。

本质上,为什么1L:3Lletters都是向量

> is.vector(1:3)
[1] TRUE
> is.vector(letters)
[1] TRUE

日期序列不是吗?

x <- structure(1:3, class = "Date")
> is.vector(x)
[1] FALSE

?vector

The atomic modes are "logical", "integer", "numeric" (synonym "double"),
"complex", "character" and "raw".

很好,很清楚,即使x是原子的......

> is.atomic(x)
[1] TRUE

那么,是什么让日期向量不被解读为向量呢?(以 的方式as.vector()),这种差异背后有什么?

这个问题来自尝试使用embed日期失败,因为它需要向量或数组。但从结构的角度来看,我看不出和之间的1L:10L区别structure(1L:10L, class="Date")

4

1 回答 1

3

我的一些评论汇总在一个答案中:

因此,文档还说:

如果 x 是指定模式的向量,除了名称之外没有其他属性,is.vector 返回 TRUE。否则返回 FALSE。

因此,正如在之前的答案中所讨论的,is.vector更像是检查向量是否具有名称以外的属性,这当然可能并不明显。

至于为什么embed会这样,我不确定。它可能会使用它is.atomic,但您必须单独检查列表以实现相同的行为。我可能忽略了其他一些边缘情况。

于 2013-09-16T21:48:38.833 回答