是什么打破了因素()的缩写词处理?

时间:2014-02-06 00:10:20

标签: r r-factor

“epitools”包的一些示例存在一些问题,例如使用epicurve.dates函数。

以下是一个流行曲线的简单示例(按天数,epicurve.dates

sampdates <- seq(as.Date("2014-01-01"), Sys.Date(), 1)
x <- sample(sampdates, 100, rep=TRUE)
epicurve.dates(x)

这是结果情节:

plot

没有绘制任何内容,如果我们查看epicurve.dates代码,我们可以看到问题发生在它尝试将日期向量编码为因子时。只生成NAs

format <- "%Y-%m-%d"; before <- after <- 7
dates0 <- as.Date(x, format = format)
min.date <- min(dates0, na.rm = TRUE) - before
max.date <- max(dates0, na.rm = TRUE) + after
cdates <- seq(min.date, max.date, by = 1)

> factor(dates0, levels = cdates)  
 [1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>     <NA> <NA> <NA> <NA> <NA>
 [24] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>     <NA> <NA> <NA> <NA> <NA>
 [47] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>     <NA> <NA> <NA> <NA> <NA>
 [70] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>     <NA> <NA> <NA> <NA> <NA>
 [93] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
51 Levels: 2013-12-25 2013-12-26 2013-12-27 2013-12-28 2013-12-29 2013-12-30 2013-12-31 2014-01-01 ... 2014-02-13

?factor帮助中,我们可以阅读:

  

如果x [i]等于level [j],则结果的第i个元素为j。如果在级别中找不到匹配的x [i]匹配(对于排除的值将会发生),则结果的第i个元素将设置为NA。

但是当我测试x [i]是否等于[j]级时,它都是真的......

> sum(dates0 %in% cdates) == length(dates0)
[1] TRUE

这里有什么问题?
(例如,factor(dates0, levels = factor(cdates))) 这个例子来自官方的epicurve.dates文档,然后我想它曾经工作过,我在http://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html查找了factor函数的变化,但我一无所获。

有什么改变吗?

0 个答案:

没有答案