如何在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
相关产品推荐
相关产品推荐

