2014-01-08 2 views
8

я начал получать это сообщение об ошибке с lubridate пакета:"parse_dt" не решен из текущего пространства имен (lubridate)

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

Ошибка в .call ("parse_dt", х, формат, 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 

ответ

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: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, 1.5.6, lubridate plyr 1.8.3)

+0

Спасибо за возрождение старого вопроса - я подтверждаю, что ваш код воспроизводит проблему. –

Смежные вопросы