2017-08-14 6 views
0

シーケンスを計算できるように、構築されたR関数をベクトル化するにはどうすればよいですか?外部ループによるベクトル化

本来の機能である:

A = function(j,x){ 
    if(x<0 & x>j){stop(print(1))} 
    else{ 
    s=0 
    for(k in 0:x){ 
     s = s + ((j-1) * ((2)^k) * x) 
    } 
    } 
return(s) 
} 

と私は私が実行できるアウターループ追加する(jは、X)ベクトルとして、ここでj = 3及びX = SEQ(-2: 2)

+1

おそらく 'mapply'はあなたの後ろですか? – ulfelder

+1

'x'だけ、あるいは' j'だけベクトルを処理できるように機能を強化したいですか? – LAP

答えて

2

Rで関数をベクトル化する最も簡単な方法はVectorizeです。結果として得られる関数はそれほど効率的ではないかもしれないことに注意してください。

Av <- Vectorize(A, vectorize.args = "x") 

Av(j = 3, x = seq(-2, 2)) 
# [1] -7 -3 0 6 28 
+0

私が探していたメソッドとまったく同じではありませんでしたが、関数を外部ループに配置する方法を理解することができました。ありがとう – R247

関連する問題