2017-05-05 3 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 
    } 

Das ist meine Funktion. Ich versuche eine Folge von Zahlen zu berechnen und dann diese Reihenfolge innerhalb der Gleichung zu verwenden. Es speichert jedoch nicht die neue Variable S und die Funktion wird auch nichts ausgeben.Warum gibt meine R-Funktion keine Werte aus?

Antwort

0

Zwei Gründe:

  1. Sie s auf Null in Ihrer Funktion alle Nullen
  2. Die wichtigsten Eingeweide Ihrer Funktion enthält 1/s[i], so s sollte keine Einstellung.

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

Hey Danke, das hat das Problem gelöst! – Barayjeemqaf

+0

Großartig! Bitte akzeptieren Sie meine Antwort, indem Sie das Häkchen unter der Anzahl der Stimmen setzen – lebelinoz

0

Sie können keine Ausgabe in der Definition einer Funktion selbst zurückgeben.

Geben Sie my.fun(s) ein, um den Ausgang für s zurückzugeben.

Achten Sie auch darauf, keine 0s zu haben, während Sie Werte für s initialisieren. Da Sie an einem Punkt 1/s machen, geben Sie nur NaNs zurück.

+0

Die Tatsache, versuchen, dass der Parameter der Funktion ist 'S' und die Hauptvariable außerhalb der Funktion wird auch 'S' in Ordnung ist. Ich stimme zu, es verursacht etwas Verwirrung, aber dieser Teil des Codes ist technisch korrekt. – lebelinoz

Verwandte Themen