如何在R中修改本地环境中预先存在的函数

如何在R中修改本地环境中预先存在的函数,r,function,package,R,Function,Package,我试图通过复制和粘贴现有函数到R脚本,并将其分配到本地环境中的新函数对象来修改它。但是,新函数无法在原始函数中找到调用的函数。如何在不单独查找和查找每个函数的情况下修复此问题?我猜想原始函数以某种方式链接到包或其依赖项,并且“知道在哪里查找”缺少的函数,但我不知道如何使用新的复制粘贴函数来执行此操作 library("camtrapR") 打印函数名 activityDensity 这里的输出是该函数的代码。我在这里省略了它,因为它很长(我在下面粘贴了它),但我复制并粘贴

我试图通过复制和粘贴现有函数到R脚本,并将其分配到本地环境中的新函数对象来修改它。但是,新函数无法在原始函数中找到调用的函数。如何在不单独查找和查找每个函数的情况下修复此问题?我猜想原始函数以某种方式链接到包或其依赖项,并且“知道在哪里查找”缺少的函数,但我不知道如何使用新的复制粘贴函数来执行此操作

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")