与向量或列表整合作为上限 R
integrate with a vecor or list as upper limit R
我想对不同的上限进行积分和计算。我试着把一个向量和一个列表放入上限参数:
ul <- as.list(seq(0.001,1,0.001))
integrand <- function(x) {1/((x+1)*sqrt(x))}
test <- integrate(integrand, lower = 0, upper = ul)$val
错误:
Error in is.finite(upper) : default method not implemented for type 'list'
我用for循环试过了:
ul <- seq(0.001,1,0.001)
for (i in ul){
test = NULL
test <- rbind(test, integrate(integrand, lower = 0, upper = S[i])$val[i])
}
错误:Error in if (is.finite(lower) && is.finite(upper)) { : missing value where TRUE/FALSE needed
我可以手动更改上限,然后使用 rbind 将结果保存在数据框中,但这需要很多时间:
test <-data.frame(test = integrate(integrand, lower = 0, upper = 0.001)$val)
test <- data.frame(rbind(test, integrate(integrand, lower = 0, upper = 0.002)$val))
等等。
我想我应该使用 lappy 来解决我的问题,但我不熟悉使用它。我该如何解决我的问题?
sapply(ul, function(x) integrate(integrand, lower = 0 , upper = x)$value )
我想对不同的上限进行积分和计算。我试着把一个向量和一个列表放入上限参数:
ul <- as.list(seq(0.001,1,0.001))
integrand <- function(x) {1/((x+1)*sqrt(x))}
test <- integrate(integrand, lower = 0, upper = ul)$val
错误:
Error in is.finite(upper) : default method not implemented for type 'list'
我用for循环试过了:
ul <- seq(0.001,1,0.001)
for (i in ul){
test = NULL
test <- rbind(test, integrate(integrand, lower = 0, upper = S[i])$val[i])
}
错误:Error in if (is.finite(lower) && is.finite(upper)) { : missing value where TRUE/FALSE needed
我可以手动更改上限,然后使用 rbind 将结果保存在数据框中,但这需要很多时间:
test <-data.frame(test = integrate(integrand, lower = 0, upper = 0.001)$val)
test <- data.frame(rbind(test, integrate(integrand, lower = 0, upper = 0.002)$val))
等等。
我想我应该使用 lappy 来解决我的问题,但我不熟悉使用它。我该如何解决我的问题?
sapply(ul, function(x) integrate(integrand, lower = 0 , upper = x)$value )