2017-05-11 4 views
0

私は積分を使用して、異なる上限値を計算したいと考えています。私は、上限パラメータにベクトルやリストを入れてみました:上限値としてvecorまたはリストと統合する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 

エラー:

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

Error in is.finite(upper) : default method not implemented for type 'list' 

私はforループでそれを試してみました

上限を手動で変更し、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を使うべきだと思いますが、私はそれを使い慣れていません。どうすれば問題を解決できますか?

+0

x = 0では、関数は無限大で、2番目のエラーが発生しています。 –

答えて

1
sapply(ul, function(x) integrate(integrand, lower = 0 , upper = x)$value) 
関連する問題