【发布时间】:2013-12-08 23:02:54
【问题描述】:
我正在构建一个函数,该函数在调用代码中使用名为 q 的变量并返回 q * log(.. some number .. )。 在会话中创建此功能时,它可以正常工作,但是在另一个会话中加载包后使用此功能创建包时,它不起作用。这是一个简化的例子
在 R 中:
>myfunc <- function() return(q * log(2.0))
>q=1.0
>myfunc()
[1] 1.386294
>package.skeleton(list=c("myfunc"),name="mypckg")
在 R 中再次构建和安装包之后
> library(mypckg)
> q = 3.0
> myfunc()
Erreur dans q * log(2) : argument non numérique pour un opérateur binaire
如果我将变量的名称从 q 修改为 qq 或任何其他名称,一切正常。
谁能解释发生了什么。 q 是某个保留名称吗?这是 R 中的某个已知错误吗?
【问题讨论】:
-
q是终止当前R会话的函数 -
不要写
return(…),如果这是函数中唯一的返回路径。 R是函数式语言,写function () q * log(2.0) -
对不起,无论是否返回,错误仍然存在!
-
@KonradRudolph 虽然是真的,但使用
return语句来明确返回什么是一种很好的编码习惯,更不用说在函数体中添加某些内容时避免意外返回不想要的内容。跨度> -
@mike:你想错了。尝试将您的对象重命名为“qqqqq”,然后查看您收到的错误消息。
标签: r