2017-05-05 161 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. 你在你的函數
  2. 你的函數的主要膽量包含1/s[i],所以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的值時,還要確保沒有0。既然你一次只做1秒,你將只返回NaN。

+0

事實上,該函數的參數是's'和功能外主變量也's'是好的。我同意這會導致一些混淆,但是這部分代碼在技術上是正確的。 – lebelinoz