parse_dt не разрешается из текущего пространства имен (смазка)

Я начал получать это сообщение об ошибке с пакетом lubridate:

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

Ошибка в .Call("parse_dt", x, format, TRUE): "parse_dt" не разрешен из текущего пространства имен (смазка)

Я никогда не сталкивался с этим раньше, и я могу создать эту ошибку только тогда, когда я использую 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   

person Remko Duursma    schedule 08.01.2014    source источник


Ответы (1)


Я не нашел объяснения описанному здесь поведению. Однако я нашел минимальный пример для воспроизведения проблемы и способ предотвратить ее повторение в моих сценариях.

Я создал следующий файл с именем «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:plyr и package: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)

person SoFarther    schedule 27.04.2016
comment
Спасибо за возрождение старого вопроса - я подтверждаю, что ваш код воспроизводит проблему. - person Remko Duursma; 02.05.2016