2014-04-12 2 views
0

Я работаю над этим несколько часов, и я довольно сильно застрял. Мне нужна функция, которая действует как функция with, но позволяет мне генерировать новые переменные в моем data.frame, используя другие переменные в data.frame или внешние значения.R: Имитация функции с помощью функции

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

Вы ищете 'within'? – Roland

ответ

1

Вторая линия тела функции должны быть:

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

Большое спасибо! Потрясающие! Я не понимал, что так близко! – fsmart

Смежные вопросы