为什么我的R功能不打印值?

问题描述:

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功能不打印值?

两个原因:

  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

你不能在函数本身的定义中返回一个输出。

my.fun(s)返回输出秒。

在初始化s的值时,还要确保没有0。既然你一次只做1秒,你将只返回NaN。

+0

事实上,该函数的参数是's'和功能外主变量也's'是好的。我同意这会导致一些混淆,但是这部分代码在技术上是正确的。 – lebelinoz