R:在函数中模仿with函数

时间:2014-04-12 15:12:24

标签: r function

我一直在研究这个问题几个小时,我几乎陷入困境。我想要一个与with函数类似的函数,但允许我使用data.frame中的其他变量或外部值在data.frame中生成新变量。

MYDATA <- data.frame(a1=rnorm(5), a2=rnorm(5))

dg <- function(svar, exp, tempdata="MYDATA") {
  tempdata <- get(tempdata)
  tempdata[svar] <- with(tempdata, eval(substitute(exp)))
  return(tempdata)
}

MYDATA
#         a1       a2
#1   0.07113  0.84302
#2  -0.46902 -1.12064
#3   1.01703  0.62591
#4   1.13271  0.24405
#5  -0.24867 -0.02474

理想情况下,它会执行以下操作:

dg("b",a1+a2)
#         a1       a2       b
#1   0.07113  0.84302  0.9141
#2  -0.46902 -1.12064 -1.5897
#3   1.01703  0.62591  1.6429
#4   1.13271  0.24405  1.3768
#5  -0.24867 -0.02474 -0.2734

感谢您的考虑! 弗朗西斯

1 个答案:

答案 0 :(得分:1)

函数体的第二行应该是:

tempdata[svar] <- eval(substitute(exp), tempdata)