You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中替换函数内指定符号以生成新函数?

基于已有函数生成替换符号的新函数需求

我有多个用于处理dataframe的函数,例如:

BaseSquareFunction <- function(DataTable) {
  DataTable %>% 
    mutate(ValSquared = ValBase^2)
}

是否存在一种方法,基于该函数生成一个新函数,将指定符号(不确定术语是否准确)替换为新符号?例如通过如下方式:

NewFunction <- functionSymbolRename(BaseSquareFunction, ValBase_Case1 = ValBase)

使NewFunction等价于以下函数:

EquivalentFunction <- function(DataTable) {
  DataTable %>% 
    mutate(ValSquared = ValBase_Case1^2)
}

我需要该函数生成器基于符号进行操作,而非简单的字符串替换,因为可能存在待修改名称是其他无需修改名称子串的情况。理想情况下,NewFunction在控制台中的输出与EquivalentFunction完全一致。


编辑补充

我最终采用了MrFlick提供的functionSymbolRename实现,但正如MrFlick及其他人所建议,这种方法通常并非良策。例如,可能会覆盖原本作为常量的因子,导致无意义的结果:

BaseSquareAdjFunction <- function(DataTable) {
  AdjFactor <- 100
  DataTable %>% 
    mutate(ValSquared = (Factor / AdjFactor)^2)
}

BaseSquareAdjFunction2 <- functionSymbolRename(BaseSquareFunction, AdjFactor = Factor)

假设输入数据包含非NA数值列AdjFactor,BaseSquareAdjFunction2生成的ValSquared将始终为1。

尽管如此,我仍采纳MrFlick的答案,因为需要处理和维护所谓的僵化代码。就像为写得糟糕的遗留代码添加功能的常见任务一样,有时及时处理现有糟糕代码的唯一方式就是生成新的糟糕代码。


内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:05:10