2013-07-12 4 views
0

Возможно ли это в ошибке factor или я что-то упустил?R: Возможная ошибка в `factor`?

xx <- seq.Date(Sys.Date(), length.out=5, by="1 day") 

factor(xx) # Works fine! 
[1] 2013-07-12 2013-07-13 2013-07-14 2013-07-15 2013-07-16 
Levels: 2013-07-12 2013-07-13 2013-07-14 2013-07-15 2013-07-16 

factor(xx, levels=unique(xx)) # Generates NAs. 
[1] <NA> <NA> <NA> <NA> <NA> 
Levels: 2013-07-12 2013-07-13 2013-07-14 2013-07-15 2013-07-16 

ответ

2

Это происходит потому, что уровни фактора являются character с, в то время как это xxDate. Передача вектора character в аргумент уровней работает как ожидалось:

factor(xx, levels=as.character(unique(xx))) 
[1] 2013-07-12 2013-07-13 2013-07-14 2013-07-15 2013-07-16 
Levels: 2013-07-12 2013-07-13 2013-07-14 2013-07-15 2013-07-16 
+1

Я нашел это. Но help '? Factor' говорит следующее: По умолчанию используется уникальный набор значений, сделанных' 'as.character (x) '', и в этом случае я буду ожидать, что оригинал тоже будет работать. Это ошибка, поскольку она отличается от документированного поведения? – asb

+1

Нет, вы переписываете значение по умолчанию, если вы передаете что-то на «уровни». – Roland

+0

@ Роланд: Да, это так. Виноват. – asb

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