在 R 中自定义现有函数

Customize existing function in R

我想在 R 中的函数 psych::polychoric 中更改条件。 具体来说,我想在代码的第 77 行将 a 变量的不同实现的限制从 8 增加到 10。 我可以通过调用

手动增加限制
trace(polychoric, edit=TRUE)

由于脚本是为了我的一篇论文的复制目的,我想通过避免手动编辑来使处理尽可能顺利。 有没有办法通过一段代码来编辑功能, 例如通过在代码中用另一个函数将 if (nvalues > 8) 替换为 if (nvalues > 10)?

如有任何建议,我们将不胜感激。

在函数中找到您要更改的位置

as.list(body(psych::polychoric))

更改功能

trace(psych::polychoric, quote(nvalues > 10), at=11)

检查您是否更改了想要更改的内容

trace(psych::polychoric, edit=TRUE)

将功能设置回原来的

untrace(psych::polychoric)

-----

似乎 fix 对您来说执行此任务可能更容易

fix(polychoric)

打开一个面板,您可以在其中更改代码 - 更改并点击保存。

这将使该函数成为全局环境的局部函数,您可以通过查看原始函数来检查这一点 trace(polychoric, edit = T) 将显示 nvalues > 10,而 trace(psych::polychoric, edit = T) 将显示 nvalues > 8.下次您重新加载 psych 时,您将使用原来的功能。有点手动破解 - 但希望适用于这种情况。