2017-04-21 20 views
0

複数の関数があり、それぞれに関数optimを繰り返すのではなく、複数の関数があります。私はそうするために他の多くの手動機能を試しました。しかし、私自身のすべての機能は動作しません。その後、私はsapply機能を使用しようとしましたが、同じ、それは動作しません。例えばサプリー関数を使用してr内の複数の関数に最適関数を適用する

my_fun <- function(x,start=c(0,1),mu=c(0.5,2),sd=c(0.3,0.2)){ 

    ll_1 <- function(mu,sd){ 
    -sum(log(dnorm(x,mu[[1]],sd[[1]])) 
    } 
    ll_2 <- function(mu,sd){ 
    -sum(log(dnorm(x,mu[[2]],sd[[2]])) 
    } 
    ## apply ll to different dnorm functions 
    } 
} 
    optimm_1 <- optim(start,fn=ll_1) 
    optimm_2 <- optim(start,fn=ll_2) 

##私はOPTIM関数が各関数に適用され、私に各1の結果を与えたいです。

x <- rnorm(10,0.5,3) ##to get the data 

私はforループ内で機能するようにしました。だから、私の機能を何度も何度も繰り返すのではなく、また、これらの機能すべてを一度に最適化するのに疲れましたが、各機能ごとに繰り返しました。

+0

'' ll'は明らかに機能ではないので、あなたが最適化しているものは明確ではありません。 – Frank

+0

ええ、あなたは正しいです、それは間違いでした。私はそれを更新する。 –

+0

さて、あなたの 'start'は2の長さを持ち、' ​​ll'の最初の引数(唯一の引数 'optim'が見えます)は明らかに長さが1です。' f < - function(par)例えば、-sum(log(dnorm(x、par [1]、par [2]))) 'を実行します。 – Frank

答えて

0

@Frankのコメントに同意します。 optim機能によって受け入れられるshuch方法であなたの機能を書き直すべきです。また、この質問(またはあなたがしようとするものに似ているかもしれません)は、このウェブサイトで回答されました。これを見てください:

[[1]:apply an optimal function to a function using a for loop in r。これがあなたを助けることを願っています。

+0

あなたの質問を追加する前にウェブサイトを検索するのは良いことですが、試行(少なくとも1つ)を追加することをお勧めします。がんばろう。 – Alice

関連する問題