Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;找不到函数“;仅当在R调试器中时_R_Debugging - Fatal编程技术网

&引用;找不到函数“;仅当在R调试器中时

&引用;找不到函数“;仅当在R调试器中时,r,debugging,R,Debugging,我经常遇到这个问题,但第一次我有了一个简单的可重复的例子。我认为,这个例子涉及lubridate这一事实是巧合。在R--普通会话中 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 fin

我经常遇到这个问题,但第一次我有了一个简单的可重复的例子。我认为,这个例子涉及lubridate这一事实是巧合。在R--普通会话中

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  
和会话信息per@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)
然后:


我可以在Win7 R3.1.2/RStudio上重新创建您的错误。我本想用
跟踪重新创建问题,以尝试拨乱反正,但函数的任何
跟踪都会破坏问题…

看起来可能与未使用
{}
定义的函数有关。目前的实施是:

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"

你的
sessionInfo
是什么?如果你运行
sessionInfo()
,它还将提供关于你加载了哪些包以及它们是什么版本的信息。FWIW,我在OS X上的3.1.2中也看到了这种行为。
。parse_xxx
是一个未报告的
lubridate
函数。所以,也许
debug
不是为了在包中已有的函数上运行而构建的?至少,如果他们调用的是隐藏函数,就不会了。这取决于
ymd
,它只包含对未导出函数的单个调用,因为在其他情况下,未导出函数似乎不会给我带来问题。一定是关于初始评估框架是如何创建的…?我很惊讶你克隆
lubridate
、编辑、安装和回答这个问题的速度有多快。你是怎么想的??可能与covr包的问题有关,该问题通过相同的代码转换得到解决。我的问题是bug或我的错误,这已经在评论中得到了回答。布罗迪格提供了一个变通方案,约书亚将问题缩小了几个数量级。很多信用,只有一个答案可以接受。@piccolbo:这是一种预感。我最初的假设是函数定义是
ymd
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"