“epitools”包的一些示例存在一些问题,例如使用epicurve.dates
函数。
以下是一个流行曲线的简单示例(按天数,epicurve.dates
)
sampdates <- seq(as.Date("2014-01-01"), Sys.Date(), 1)
x <- sample(sampdates, 100, rep=TRUE)
epicurve.dates(x)
这是结果情节:
没有绘制任何内容,如果我们查看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
函数的变化,但我一无所获。
有什么改变吗?