gpt4 book ai didi

r - For循环一个函数以获得R中的函数输出

转载 作者:行者123 更新时间:2023-12-04 11:47:25 26 4
gpt4 key购买 nike

我想计算与向量中每个值关联的函数的积分。举个例子,我准确地描述了我的目标如下。

假设xy是独立的随机变量,I是指示变量使得I=1 如果 y > 0.25x 否则为 zero。我想根据指数分布对 y 进行 n 抽取,对于每次抽取,我希望计算 g = xf(x)Ixf(x)。我希望此分布呈指数分布,参数值为 1。我在 r 中尝试了以下代码。

f = function(n){
h = list()
g = numeric()
y = rexp(n)
for(i in 1:n){
h[i] = function(x){(x * dexp(x) * (y[i] > 0.5*x))}
g[i] = integrate(h[i], lower=-Inf, upper=Inf)
}
return(summary(g))
}

但是当我运行 f(3) 时,我收到一条错误消息“* Error in h[i] = function(x) { : cannot coerce type 'closure' to vector of type 'list'”* 。但是当我运行以下代码时

y = rexp(1)
h = function(x){x * dexp(x) * (y > 0.5*x)}
integrate(h, lower=-Inf, upper=Inf)
f(3)

我得到了结果。有人建议如何改进此代码,以便在 y 的每个值处评估 h 函数,输出为 function,这然后将传递给 g 函数?

最佳答案

我建议使用 sapply 而不是循环:

f = function(n){
y = rexp(n)
g = sapply(1:n, function(i)
integrate(function(x) (x * dexp(x) * (y[i] > 0.5*x)), lower=-Inf, upper=Inf))
return(summary(g))
}

关于r - For循环一个函数以获得R中的函数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com