Вы можете использовать mapply
:
df$area <- mapply(function(phi,k){
integrate(func, lower=0, upper=phi, k=k)$value
}, df$phi, df$k)
Однако это приводит к ошибке, поскольку существуют некоторые значения k
, равные 1
или -1
, в то время как допустимые значения -1 < k < 1
. Вы не можете оценить этот интеграл для k = +/- 1
.
Обратите внимание, что есть лучший способ оценить этот интеграл: неполная эллиптическая функция первого рода реализована в пакете gsl
:
> integrate(func, lower=0, upper=6, k=0.5)$value
[1] 6.458877
> gsl::ellint_F(6, 0.5)
[1] 6.458877
Как я уже сказал, эта функция не определена для k=-1
или k=1
:
> gsl::ellint_F(6, 1)
[1] NaN
> gsl::ellint_F(6, -1)
[1] NaN
> integrate(func, lower=0, upper=6, k=1)
Error in integrate(func, lower = 0, upper = 6, k = 1) :
non-finite function value