更新公式以添加协变量函数。

3
假设我们有一个公式:
f1 <- y ~ x1

我们需要在此基础上添加协变量sin(2*pi*x2),使用一个接受x2作为参数的函数进行操作。

当然,这个可以运行:update(f1, . ~ . + sin(2 * pi * x2) 但我需要一个像下面这样的函数:

updf <- function(formula, x){
    formula <- update(formula, paste("~ . +", sin(2 * pi * x)))
    formula}

调用updf(f1,"x2")将返回:y ~ x1 + sin(2 * pi * x2)。但是该调用会返回错误信息:"Error in 2 * pi * x : non-numeric argument to binary operator"。

如何解决这个问题?


3
如果“x”是一个变量名称字符串,那么 formula <- update(formula, paste("~ . + sin(2 * pi * ", x, ")")) 就可以解决问题了。 - Oliver
2
@Oliver 是的,它确实起到了作用。谢谢你。 - papgeo
1个回答

1
如果x是一个变量的名称字符串,那么formula <- update(formula, paste("~ . + sin(2 * pi * ", x, ")"))应该可以工作。
f1 <- y ~ x1

updf <- function(formula, x){
  formula <- update(formula, paste("~ . + sin(2 * pi * ", x, ")"))
  formula
}  

updf(f1, "x2")
#> y ~ x1 + sin(2 * pi * x2)

这个回答来自@Oliver的评论,发布时间超过一个月。我不想窃取他的功劳,只是希望这个问题不再出现在“未回答”的列表里,因为它实际上已经得到了回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接