R:在循环中定义函数

标签 r function

在循环中定义多个函数:

par <- 1:2    #parameters for functions
qF <- list()  #list I will write the functions into

for(i in 1:2){
  qF[[i]] <- function(p){qnorm(p, mean = par[i])}
}

我的结果:

>qF
[[1]]
function (p) 
{
qnorm(p, mean = par[i])
}

[[2]]
function (p) 
{
qnorm(p, mean = par[i])
}

功能是一样的!我希望我的结果是什么:

>qF
[[1]]
function (p) 
{
 qnorm(p, mean = par[1])
}

[[2]]
 function (p) 
{
 qnorm(p, mean = par[2])
}

有什么办法吗?

最佳答案

你可以这样做:

library(functional)

funcs = lapply(1:2, function(u) Curry(qnorm, mean=u)) 

funcs[[1]](0.77)
#[1] 1.738847

funcs[[2]](0.77)
#[1] 2.738847

或者如果你不喜欢辛辣的食物:

funcs = lapply(1:2, function(u) function(...) qnorm(..., mean=u)) 

关于R:在循环中定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31556088/

相关文章:

r - 使用 rgl 示例编织 R HTML 帮助文档

r - 创建自定义几何图形来计算汇总统计数据并在绘图区域*外部*显示它们

r - 在 "."中的 `fread` 中使用 sep = "data.table"

php - 为什么定义一个函数算作多个语句?

用于搜索 Pandas 数据框的 Python 函数

采用 args Eigen 稀疏矩阵的 C++ 函数

r - 使用 R 替代具有 "dynamic"变量的 for 循环

r - 寻找算法来进行长配对核苷酸比对

C 凯撒密码函数调用未按预期运行

c++ - 使用 boost 进行函数式编程:将 boost::bind 传递给 boost::bind