为什么我的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/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)
答
你不能在函数本身的定义中返回一个输出。
做my.fun(s)
返回输出秒。
在初始化s的值时,还要确保没有0。既然你一次只做1秒,你将只返回NaN。
+0
事实上,该函数的参数是's'和功能外主变量也's'是好的。我同意这会导致一些混淆,但是这部分代码在技术上是正确的。 – lebelinoz
嘿,谢谢,这解决了这个问题! – Barayjeemqaf
太棒了!请通过勾选投票计数下方的复选标记来接受我的回答 – lebelinoz