【发布时间】:2013-10-08 22:18:51
【问题描述】:
问题:
如何找出正在调用的函数的版本?例如,如果我在 data.frame 上使用unique,我假设我正在使用unique.data.frame。但是,没有unique.raster 函数,虽然有raster::unique。但是如果我使用,例如trace(unique),我只会得到正在使用unique 函数的信息。
我想确认,例如,当我调用 unique(data.frame(1)) 时,正在调用 unique.data.frame。
示例:
我无法弄清楚为什么unique(raster_object) 在命令行中有效,但在函数内部无效。显然,unique.default 在函数内部被调用,所以我想明确说明哪个 `unique.&
例如这有效:
library(raster)
a <- rasterFromXYZ(data.frame(a=1:2,b=2:3,c=3:4))
unique(a)
但是当我把它放在一个函数中时:
myfun <- function(){
a <- rasterFromXYZ(data.frame(a=1:2,b=2:3,c=3:4))
b <- crop(a, extent(c(1,2,3,4)))
unique(a)
}
即使包使用raster 作为依赖项,在我构建包并在新的 R 会话中加载它之后,我也会收到错误:
> myfun()
Error in unique.default(a) : unique() applies only to vectors
尽管sessionInfo() 显示光栅包已加载。
如果我使用debug(unique),它似乎并没有告诉我正在调用哪个函数:
Browse[6]> unique(a)
Error in unique.default(a) : unique() applies only to vectors
Browse[6]> raster::unique(a)
debugging in: raster::unique(a)
debug: standardGeneric("unique")
【问题讨论】:
-
我无法复制您的问题,但通常您可以拨打
debug(unique),然后拨打您的unique电话并逐步(通过输入“n”)查看调用了哪些函数 -
@eddi 重现,可以试试
library(devtools); install_github("rhwsd", "dlebauer", ref = "717c18f5"); library(rhwsd); myfun()