2017-05-05 20 views
-2
s <- seq(-10, 6, by = 0.1) 

    my.fun = function(s) 
    { 
    n = length(s) 
    s = 0 
    for(i in 1:n) 
    {  
     s = ((s[i]*s[i]*s[i]*s[i])*sin(1/s[i]) +(s[i]*s[i]))/(1+abs((s[i]*s[i]*s[i]))) 
    } 
    s 
    } 

これは私の機能です。私は数列を計算し、その数列内でそのシーケンスを使用しようとしています。しかし、新しい変数Sを保存するのではなく、関数は何も出力しません。R関数が値を出力しないのはなぜですか?

答えて

0

つの理由:

  1. あなたは、あなたの関数の主な根性が1/s[i]が含まれているので、sは任意のゼロを含むべきではないあなたの関数でゼロにs
  2. を設定しています。

は、関数のパラメータが `関数外S`と主変数も` S`が細かいされているという事実

s <- seq(-10, 6, by = 0.1) 
s = s[which(s != 0)] # to drop the zero from the vector 

my.fun = function(s) 
{ 
    n = length(s) 
    for(i in 1:n) {  
    s[i] = ((s[i]*s[i]*s[i]*s[i])*sin(1/s[i]) + s[i]*s[i]))/(1+abs((s[i]*s[i]*s[i]))) 
    } 
    s 
} 
my.fun(s) 
+0

ねえ、ありがとう、これは問題を解決しました! – Barayjeemqaf

+0

素晴らしい!投票数の下にあるチェックマークをチェックして、私の答えを受け入れてください – lebelinoz

0

出力を関数自体の定義に戻すことはできません。

my.fun(s)を実行すると、sの出力が返されます。

また、sの値を初期化している間に0がないことを確認してください。ある時点で1/sを実行しているので、NaNだけが返されます。

+0

を試してみてください。私はいくつかの混乱を招くことに同意しますが、コードのその部分は技術的に正しいものです。 – lebelinoz

関連する問題