“parse_dt”未从当前命名空间解析(lubridate)

时间:2014-01-08 00:29:24

标签: r rstudio lubridate

我开始使用lubridate包收到此错误消息:

as.Date(ymd_hms("2014-1-1 12:31:15"))
  

.Call中的错误(“parse_dt”,x,格式,TRUE):       “parse_dt”未从当前命名空间(lubridate)解析

我之前从未遇到过这种情况,我只能在长脚本(实际包中有几个嵌套函数)中使用lubridate时才会创建此错误 - 我不知道哪一行导致了问题(我已经调试了几个小时,现在没有任何运气)。

此外,它似乎只发生在我使用Rstudio时,而不是在Rgui中运行相同的代码时。

一旦发生,我必须重新启动R lubridate再次工作。此外,在它发生后,我在我的全球环境中有这个对象:

> ls()
[1] "oldLC"
> oldLC
[1] "English_Australia.1252"

我知道我应该发布可以复制的错误,但我不能自己重现这一点,并希望指针在哪里看!

R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1]  LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] HIEv_0.3        RODBC_1.3-10    maptools_0.8-27 sp_1.0-14       stringr_0.6.2  
[6] plyr_1.8        RCurl_1.95-4.1  bitops_1.0-6    rjson_0.2.13    lubridate_1.3.3
[11] roxygen2_3.0.0 

loaded via a namespace (and not attached):
[1] brew_1.0-6      codetools_0.2-8 digest_0.6.4    foreign_0.8-57  grid_3.0.2     
[6] lattice_0.20-24 memoise_0.1     tools_3.0.2   

1 个答案:

答案 0 :(得分:2)

我没有找到这里描述的行为的解释。但是,我找到了一个复制问题的最小例子,以及一种防止在我的脚本中再次出现的方法。

我创建了以下名为&#34的文件; CODE-TEST-Lubridate2.R"。

## LOAD PACKAGES
library(plyr) # Important to load plyr before dplyr due to function masking.
library(dplyr)
library(lubridate)

dateTemp <- mdy("01-01-1910")

## Cleanup
pkgs <- names(sessionInfo()$otherPkgs)
pkgs <- paste('package:', pkgs, sep = "")
lapply(pkgs, detach, character.only = TRUE, unload = TRUE, force = TRUE)

当我获取文件时,请使用以下命令第二次来源

source("data_raw/CODE-TEST-Lubridate2.R")

发生错误,终止执行,并收到以下错误消息:

Error in .Call("parse_dt", x, format, TRUE, FALSE) : 
"parse_dt" not resolved from current namespace (lubridate)

当我从清理脚本中删除package:plyrpackage:dplyr时,

 ## Cleanup
exceptPkgs <- c("plyr", "dplyr")
pkgs <- names(sessionInfo()$otherPkgs)
pkgs <- pkgs[ which( !(names(sessionInfo()$otherPkgs) %in% exceptPkgs ) ) ]
pkgs <- paste('package:', pkgs, sep = "")
lapply(pkgs, detach, character.only = TRUE, unload = TRUE, force = TRUE)

意味着我按原样加载plyrdplyr,错误不再发生。

(使用R 3.2.4,RStudio 0.99.896,dplyr 0.4.3,lubridate 1.5.6,plyr 1.8.3)