2013-09-16 2 views
3

Это, наверное, будет глупый вопрос, но я не могу найти ответ быстро, и мне слишком любопытно отказаться, даже если поздно.Что думает R о векторе дат?

В сущности, почему 1L:3L и letters оба вектора

> 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". 

Fine, ясный, хотя x атомная ...

> is.atomic(x) 
[1] TRUE 

Итак, что делает вектор даты не будет прочитан как вектор? (в средствах as.vector()) и что там за этой разницей?

Этот вопрос исходит из попытки использовать embed с датами, которые не могут вызвать необходимость в векторе или массиве. Но со структурной точки зрения, я не вижу разницы между 1L:10L и structure(1L:10L, class="Date")

+5

От '? Is.vector':" is.vector возвращает TRUE, если x является вектором указанного режима, не имеющего атрибутов, кроме имен_. В противном случае он возвращает FALSE. ". – joran

+0

(т. Е. 'Class' является атрибутом.) – joran

+0

@joran Я вижу, спасибо. но это не имеет никакого смысла. например использовать 'embed' мне нужно преобразовать в число, а затем вернуться к дате снова ... это бессмысленно! Я действительно спрашиваю, почему R различает вектор числа, char, логический и даты. – Michele

ответ

3

Несколько моих комментариев собраны вместе в ответ:

Таким образом, документация также говорит:

is.vector возвращает TRUE, если x - вектор указанного режима, не имеющий атрибутов, отличных от имен. В противном случае он возвращает FALSE.

Так как обсуждалось в this проницаемым ответ, is.vector больше похож на проверку того, имеет ли вектор, кроме имен, которые, конечно, не могут быть очевидны признаки.

Что касается причины, почему embed ведет себя так, как делает, я не уверен. Вместо этого он мог бы использовать is.atomic, но вам пришлось бы проверять списки отдельно для достижения такого же поведения. Могут быть и другие крайние случаи, которые я пропускаю.

Смежные вопросы