10

我开始收到这个lubridate包的错误消息:

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

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

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

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

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

> 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   
4

1 回答 1

2

我还没有找到对这里描述的行为的解释。但是,我找到了一个最小的示例来复制该问题以及防止其在我的脚本中再次发生的方法。

我创建了以下名为“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)

这意味着我离开plyr并按dplyr原样加载,该错误​​不再发生。

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

于 2016-04-27T09:53:26.470 回答