Как я могу использовать defmacro (from gtools), чтобы упорядочить его так, чтобы при вводе f(x)
результатом было возвращаемое значение g("x")
?R macro: как f (x) -> g ("x")
Я полагаю (потому что я программист на C), в котором участвует defmacro ... но я был бы счастлив достичь цели с помощью defmacro или без него.
К сожалению f <- defmacro(x, expr={ g(quote(x)) })
поражен и пропустить ... это работает для некоторых функций, но не выполняется для других, как, например,
g <- function(v) {
eval(parse(text=paste0("f0 = lm(Sale_Price ~ ", v, ", data = d1)")))
r0 <- data.frame(predict(f0, d1), d1$Sale_Price)
colnames(r0) <- c(v, "Sale_Price")
ggplot() +
labs(x= v, y= "Sale_Price") +
geom_point(data = r0, aes(get(v), Sale_Price), colour="black") +
geom_smooth(data = r0, method = "lm", aes(x = get(v), y Sale_Price), colour="blue", se = FALSE)
}
я могу изменить приведенное выше определение, так что f <- defmacro(x, expr={ g(quote(x)) })
получится ... но это не мой вопрос. Я хочу знать, как вообще может быть устроено так, что, когда я печатаю f(x)
результат возвращаемого значение g("x")
для произвольной определяемого пользователя g
(но я был бы признателен за ответ, который работает с умеренными ограничениями на g
) ,