当R中有嵌套函数时,如何在R中以编程方式创建函数?
我的目标是使用代码创建以下函数:当R中有嵌套函数时,如何在R中以编程方式创建函数?,r,metaprogramming,rlang,R,Metaprogramming,Rlang,我的目标是使用代码创建以下函数: s <- c(x = 10) a <- c(i = 3) model <- function(s, a) { with(as.list(c(s, a)), { y <- x * i y * 10 }) } model(s, a) s不确定您在此处使用新功能的动机,但这会给出您的预期输出: library(rlang) s <- (x = 10) a <- (i = 3) foo <- n
s <- c(x = 10)
a <- c(i = 3)
model <- function(s, a) {
with(as.list(c(s, a)), {
y <- x * i
y * 10
})
}
model(s, a)
s不确定您在此处使用新功能的动机,但这会给出您的预期输出:
library(rlang)
s <- (x = 10)
a <- (i = 3)
foo <- new_function(
args = pairlist2(s =, a =),
body = expr(
with(as.list(c(s, a)), {
y <- x * i
y * 10
})
)
)
foo(s, a)
#[1] 300
不确定您在此处使用新函数的动机,但这会给出您的预期输出:
library(rlang)
s <- (x = 10)
a <- (i = 3)
foo <- new_function(
args = pairlist2(s =, a =),
body = expr(
with(as.list(c(s, a)), {
y <- x * i
y * 10
})
)
)
foo(s, a)
#[1] 300
使用base R,您可以执行以下操作:
foo使用base R,您可以执行以下操作:
我看不出动机。为什么不只是model为什么要这样编写函数?为什么不直接把s
和a
作为new_函数的参数呢?原因是我从其他软件中得到了方程,它们以字符串的形式出现。我看不到动机。为什么不只是model为什么要这样编写函数?为什么不直接将s
和a
作为参数放入new_函数
中呢?其动机是我从其他软件中获得了方程,它们以字符串的形式出现。
foo2 <- new_function(
args = pairlist2(s =, a =),
body = parse_expr(
"with(as.list(c(s, a)), {
y <- x * i
y * 10
})"
)
)
foo2(s, a)
#[1] 300