使用该术语的变体全面替换R公式中的一个术语

时间:2016-08-10 16:47:22

标签: r formula substitution

我昨天发布了a similar question。在阅读和回答答案的过程中,我更好地了解了我想要问的问题。评论中指出我正在“改变问题”,因此我应该发布一个新问题。这是一个新的,经过深思熟虑的问题!

我有以下情况,其中unknown.function是我正在尝试实施的内容:

my.formula <- fruit ~ apple * banana + carrot + apple
var.to.replace <- 'apple'
new.terms <- paste0('(', 
                    paste0(var.to.replace, 
                           c('_part1', '_part2'),
                           collapse = '+'),
                    ')')

result <- unknown.function(my.formula, var.to.replace, new.terms)

print(result)
# fruit ~ (apple_part1 + apple_part2) * banana + carrot + (apple_part1 + apple_part2)

MrFlick建议unknown.function的以下定义,似乎很有希望。

unknown.function <- function(formula,
                             to.replace,
                             replace.with) {
    replacer <- list(replace.with)
    replacer <- setNames(object = replacer, nm = to.replace)
    result <- do.call(what = 'substitute',
                      args = list(formula, replacer))
    return(result)
}

但是这个功能的结果只是一点点:

print(result)
# fruit ~ "(apple_part1+apple_part2)" * banana + carrot + "(apple_part1+apple_part2)"

具体而言,新条款使用引号,这似乎妨碍了result作为典型的R公式:

all.vars(result)
# "fruit"  "banana" "carrot"

理想情况下,'apple_part1'和'apple_part2'会在result中变量。

0 个答案:

没有答案