как сделать for-l oop для integrate () в R - PullRequest
0 голосов
/ 11 февраля 2020

Ниже приведен мой R-код, если я установлю «c» равным 10,11,12,13,14 отдельно, чтобы получить пять разных «финалов», как я могу установить l oop для функции интегрировать ()? Заранее спасибо.

a<-1;b<-2;c<-10
integrand<-function(k) 
{
  a+b*c*k
}
outcome<-integrate(integrand, lower = 0, upper = 1)
final<-outcome$value+c

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы можете решить эту проблему с помощью анонимных функций и sapply

# create a function with two parameters
aux_function<-function(k,c) 
{
  a+b*c*k
}
# integrate on x with different c values
outcome<-sapply(10:14, function(c) {integrate(function(x) {aux_function(x,c)}, lower = 0, upper = 1)$value +c})

Редактировать

Онямбу нашел лучший ответ в комментариях ниже

outcome<-sapply(10:14,  function(c) {integrate(aux_function,lower=0,upper=1,c=c)$value +c})
1 голос
/ 11 февраля 2020

Полагаю, мой ответ правильный. Могу ли я опубликовать свой ответ?

  h<- list()
  g<- numeric()
  a<-1;b<-2;c<-c(10,11,12,13,14)

  for(i in 1:length(c))
  {
    h[[i]] = function(k){ a+b*c[i]*k}
    g[i] = integrate(h[[i]], lower=0, upper=1)$value+c[i]
  }
  g
...