我认为@ ben-rollert的解决方案是一个很好的解决方案。
如果要在新包中的函数中使用此解决方案,则必须小心。
在开发包时,建议使用语法packagename::function_name()(请参阅http://kbroman.org/pkg_primer/pages/depends.html)。
在这种情况下,您必须使用zoo库定义的as.Date()版本。
这是一个例子:
> devtools::session_info()
Session info ----------------------------------------------------------------------------------------------------------------------------------------------------
setting value
version R version 3.3.1 (2016-06-21)
system x86_64, linux-gnu
ui RStudio (1.0.35)
language (EN)
collate C
tz
date 2016-11-09
Packages --------------------------------------------------------------------------------------------------------------------------------------------------------
package * version date source
devtools 1.12.0 2016-06-24 CRAN (R 3.3.1)
digest 0.6.10 2016-08-02 CRAN (R 3.2.3)
memoise 1.0.0 2016-01-29 CRAN (R 3.2.3)
withr 1.0.2 2016-06-20 CRAN (R 3.2.3)
> as.Date(zoo::as.yearmon("1989-10", "%Y-%m"))
Error in as.Date.default(zoo::as.yearmon("1989-10", "%Y-%m")) :
do not know how to convert 'zoo::as.yearmon("1989-10", "%Y-%m")' to class “Date”
> zoo::as.Date(zoo::as.yearmon("1989-10", "%Y-%m"))
[1] "1989-10-01"因此,如果您正在开发包,那么最佳做法是使用:
zoo::as.Date(zoo::as.yearmon("1989-10", "%Y-%m"))