【发布时间】:2020-06-01 00:40:31
【问题描述】:
我正在尝试使用自定义函数来解决参数的多个排列。
该函数 (yield.n) 在我调用一次时可以正常工作,例如: 产量.n(naa, F, M, S, Y) naa 是一个大型数据框 (750000 x 17),F、M 和 Y 是数字对象,S 是向量。
我想用这个函数解决 Y 的各种值。我尝试了 apply 系列的多种排列,但我无法提出函数代码。 如果我对 Y 的值(代码崩溃)运行 for 循环,它可以正确解决,但速度很慢。
yn.out <- NULL
for(yr in 50:150){
yr.out <- yield.n(naa, ssf, M, S, yr)
yr.out <- cbind(yr.out, yr)
yn.out <- rbind(yn.out, yr.out)
}
yn.out <- as.data.frame(yn.out)
我如何获得一个应用函数来解决这个问题以解决 Y 的多个值?
该函数的代码如下(但我不确定这与手头的问题是否相关)。
function(naa, F, M, S, Y){
yr <- Y
naa.lci <- aggregate(naa[, 1:16], list(naa$year),
"quantile", probs = .05)
naa.m <- aggregate(naa[, 1:16], list(naa$year),
"quantile", probs = .5)
naa.uci <- aggregate(naa[, 1:16], list(naa$year),
"quantile", probs = .9)
yield.n.lci <- round(sum(((F*S)/(M + (F*S))) * (1- exp(-M-(F*S))) *
naa.lci[yr, 2:17]))
yield.n.m <- round(sum(((F*S)/(M + (F*S))) * (1- exp(-M-(F*S))) *
naa.m[yr, 2:17]))
yield.n.uci <- round(sum(((F*S)/(M + (F*S))) * (1- exp(-M-(F*S))) *
naa.uci[yr, 2:17]))
yield.out <- cbind(yield.n.lci, yield.n.m, yield.n.uci)
return(yield.out)
}
【问题讨论】:
标签: r apply user-defined-functions