如何在R中修改本地环境中预先存在的函数
我试图通过复制和粘贴现有函数到R脚本,并将其分配到本地环境中的新函数对象来修改它。但是,新函数无法在原始函数中找到调用的函数。如何在不单独查找和查找每个函数的情况下修复此问题?我猜想原始函数以某种方式链接到包或其依赖项,并且“知道在哪里查找”缺少的函数,但我不知道如何使用新的复制粘贴函数来执行此操作如何在R中修改本地环境中预先存在的函数,r,function,package,R,Function,Package,我试图通过复制和粘贴现有函数到R脚本,并将其分配到本地环境中的新函数对象来修改它。但是,新函数无法在原始函数中找到调用的函数。如何在不单独查找和查找每个函数的情况下修复此问题?我猜想原始函数以某种方式链接到包或其依赖项,并且“知道在哪里查找”缺少的函数,但我不知道如何使用新的复制粘贴函数来执行此操作 library("camtrapR") 打印函数名 activityDensity 这里的输出是该函数的代码。我在这里省略了它,因为它很长(我在下面粘贴了它),但我复制并粘贴
library("camtrapR")
打印函数名
activityDensity
这里的输出是该函数的代码。我在这里省略了它,因为它很长(我在下面粘贴了它),但我复制并粘贴了函数代码的输出(请参见下文,我将这个精确的代码分配给一个新函数),除了最后两行输出,我认为这很重要:
<bytecode: 0x000000002a2d1e20>
<environment: namespace:camtrapR>
这里的答案是:允许手动编辑和保存每个R会话的函数代码,但它是不可复制的(不是代码),可以共享或重复使用。如果
New
是从camtrapR复制的新函数,则使用
environment(New) <- asNamespace("camtrapR")
environment(New)分配环境,即environment(New),我知道它会很简单-只是我找不到的东西之一!非常感谢。是的,我想我可以为每个函数使用包::
,但不想搜索它们都来自何处。你是在寻找劫持
函数吗?我发现这在过去很有用。
New()
Error in dataFrameTibbleCheck(df = recordTable) :
could not find function "dataFrameTibbleCheck"
environment(New) <- asNamespace("camtrapR")