"could not find function" 仅当在 R 调试器中时
"could not find function" only when in the R debugger
我不时地 运行 参与其中,但这是我第一次拥有简单的可重现示例。我认为该示例涉及 lubridate 这一事实纯属巧合。在 R --vanilla session
library(lubridate)
ymd("2001-02-02")
# [1] "2001-02-02 UTC"
# so far so good
debug(ymd)
ymd("2001-02-02")
# debugging in: ymd("2001-02-02")
# Error in ymd("2001-02-02") : could not find function ".parse_xxx"
ymd 没有什么问题,我正在尝试学习一些东西。但是当你实际调试时发生这种情况,这很烦人。调试器错误还是我遗漏了什么?
版本信息
> R.version
_
platform x86_64-apple-darwin13.4.0
arch x86_64
os darwin13.4.0
system x86_64, darwin13.4.0
status
major 3
minor 1.2
year 2014
month 10
day 31
svn rev 66913
language R
version.string R version 3.1.2 (2014-10-31)
nickname Pumpkin Helmet
以及根据@Joshua Urlich 评论的会话信息
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lubridate_1.3.3
loaded via a namespace (and not attached):
[1] digest_0.6.4 memoise_0.2.1 plyr_1.8.1 Rcpp_0.11.3 stringr_0.6.2
谢谢
不是解决方案或解释,而是潜在的解决方法:
trace(ymd, browser)
然后:
> ymd("2001-02-02")
Tracing ymd("2001-02-02") on entry
Called from: eval(expr, envir, enclos)
Browse[1]> n
debug: .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
Browse[2]>
我能够在 Win7 R3.1.2 / RStudio 上重现您的错误。我希望用 trace
重新创建问题以尝试四处寻找,但是函数的任何 trace
都会破坏问题...
看起来可能与未使用 {}
定义的函数有关。当前的实现是:
ymd <- function(..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale("LC_TIME"), truncated = 0)
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale, truncated = truncated)
如果我解压源代码并将实现更改为:
,您的 debug
尝试就会成功
ymd <- function(..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale("LC_TIME"), truncated = 0)
{ .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale, truncated = truncated)}
在进行上述更改之前,我能够重现该问题。制作完成后,我得到:
> require(lubridate); debug(ymd); ymd("2015-01-01")
Loading required package: lubridate
debugging in: ymd("2015-01-01")
debug: {
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
}
Browse[2]>
debug: .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
Browse[2]>
exiting from: ymd("2015-01-01")
[1] "2015-01-01 UTC"
我不时地 运行 参与其中,但这是我第一次拥有简单的可重现示例。我认为该示例涉及 lubridate 这一事实纯属巧合。在 R --vanilla session
library(lubridate)
ymd("2001-02-02")
# [1] "2001-02-02 UTC"
# so far so good
debug(ymd)
ymd("2001-02-02")
# debugging in: ymd("2001-02-02")
# Error in ymd("2001-02-02") : could not find function ".parse_xxx"
ymd 没有什么问题,我正在尝试学习一些东西。但是当你实际调试时发生这种情况,这很烦人。调试器错误还是我遗漏了什么?
版本信息
> R.version
_
platform x86_64-apple-darwin13.4.0
arch x86_64
os darwin13.4.0
system x86_64, darwin13.4.0
status
major 3
minor 1.2
year 2014
month 10
day 31
svn rev 66913
language R
version.string R version 3.1.2 (2014-10-31)
nickname Pumpkin Helmet
以及根据@Joshua Urlich 评论的会话信息
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lubridate_1.3.3
loaded via a namespace (and not attached):
[1] digest_0.6.4 memoise_0.2.1 plyr_1.8.1 Rcpp_0.11.3 stringr_0.6.2
谢谢
不是解决方案或解释,而是潜在的解决方法:
trace(ymd, browser)
然后:
> ymd("2001-02-02")
Tracing ymd("2001-02-02") on entry
Called from: eval(expr, envir, enclos)
Browse[1]> n
debug: .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
Browse[2]>
我能够在 Win7 R3.1.2 / RStudio 上重现您的错误。我希望用 trace
重新创建问题以尝试四处寻找,但是函数的任何 trace
都会破坏问题...
看起来可能与未使用 {}
定义的函数有关。当前的实现是:
ymd <- function(..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale("LC_TIME"), truncated = 0)
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale, truncated = truncated)
如果我解压源代码并将实现更改为:
,您的debug
尝试就会成功
ymd <- function(..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale("LC_TIME"), truncated = 0)
{ .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale, truncated = truncated)}
在进行上述更改之前,我能够重现该问题。制作完成后,我得到:
> require(lubridate); debug(ymd); ymd("2015-01-01")
Loading required package: lubridate
debugging in: ymd("2015-01-01")
debug: {
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
}
Browse[2]>
debug: .parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale,
truncated = truncated)
Browse[2]>
exiting from: ymd("2015-01-01")
[1] "2015-01-01 UTC"