我一直在研究这个问题几个小时,我几乎陷入困境。我想要一个与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
感谢您的考虑! 弗朗西斯
答案 0 :(得分:1)
函数体的第二行应该是:
tempdata[svar] <- eval(substitute(exp), tempdata)