使用跟踪编辑 R 中的函数?

MHe*_*ydt 5 trace r function edit

我注意到我想使用的包中的函数存在错误。GitHub 上出现了一个问题,但创建者还没有解决这个问题,我需要尽快使用该功能。

因此我想编辑代码。显然,这可以通过编辑源代码、重新打包和安装整个包来实现,我可以重写函数并重新分配命名空间,但也可能只使用trace().

我已经发现我可以做到:

as.list(body(package:::function_inside_function))
Run Code Online (Sandbox Code Playgroud)

我要编辑的行位于该函数的第二步

具体来说,我需要编辑的就是代码中的这一行。我必须更改ignore.caseignore.case=TRUE. 链接失效的例子:

functionx(){if{...} else if(grepl("miRNA", data.type, ignore.case)) {...}}
Run Code Online (Sandbox Code Playgroud)

我还没有真正找到如何从这里开始的实际示例,所以有人可以向我展示如何执行此操作的示例,或者引导我找到使用跟踪的实际示例吗?或者也许将函数重新分配给名称空间?

Rol*_*ASc 2

对于您的具体情况,您可能确实可以使用 来解决它trace

从您提供的链接中,我不知道为什么您提到function inside a function,但这应该有效:

# example
trace("grepl", tracer = quote(ignore.case <- TRUE))

grepl("hi", "Hi")
## Tracing grepl("hi", "Hi") on entry 
## [1] TRUE

# your case (I assume)
trace("readTranscriptomeProfiling", tracer = quote(ignore.case <- TRUE))
Run Code Online (Sandbox Code Playgroud)

请注意,如果您要修复的参数ignore.case尚未位于调用中的正确位置,则情况会更加复杂。