2014-01-08 5 views
8

ich mit dem lubridate Paket erhalten diese Fehlermeldung gestartet:"parse_dt" nicht von den aktuellen Namensraum (lubridate) aufgelöst

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

Fehler in .Call ("parse_dt", x, Format, TRUE): „parse_dt“ nicht von den aktuellen Namensraum (lubridate)

mir dies noch nie zuvor begegnet gelöst, und ich kann diesen Fehler nur schaffen, wenn ich lubridate tief in einem langen Skript verwenden (mehrere verschachtelten Funktionen in einem Paket eigentlich) - und ich habe keine Ahnung, welche Zeile das Problem verursacht (ich habe jetzt stundenlang ohne Glück debuggt).

Auch scheint es nur auftreten, wenn ich Rstudio verwende, nicht wenn ich den gleichen Code in einem Rgui ausführen.

Sobald es auftritt, muss ich R für lubridate neu starten, um wieder zu arbeiten. Auch nachdem er auftritt, habe ich diese Aufgabe in meiner globalen Umwelt:

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

Ich weiß, ich soll Fehler schreiben, die reproduziert werden kann, aber ich kann das selbst nicht reproduzieren und bin der Hoffnung, für Zeiger, wo sie suchen!

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 

Antwort

2

Ich habe keine Erklärung für das hier beschriebene Verhalten gefunden. Ich habe jedoch ein minimales Beispiel gefunden, um das Problem zu replizieren und eine Möglichkeit, es in meinen Skripten zu vermeiden.

Ich habe die folgende Datei namens "CODE-TEST-Lubridate2.R" erstellt.

## 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) 

wenn ich die Datei beziehen, beziehen dann ein zweites Mal mit dem folgenden Befehl,

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

ein Fehler auftritt, wird die Ausführung beendet wird, und I die folgende Fehlermeldung:

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

Wenn ich package:plyr und package:dplyr aus dem Bereinigungsskript entferne,

## 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) 

was bedeutet, dass ich lasse plyr und dplyr geladen, wie es ist, Der Fehler tritt nicht mehr auf.

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

+0

Dank für eine alte Frage wiederzubeleben - Ich bestätige, dass Ihr Code das Problem reproduziert. –