【发布时间】:2013-05-21 17:12:25
【问题描述】:
我对 R 比较陌生,所以如果这个问题有点愚蠢,我深表歉意。
我正在调用外部包中的函数('mmlcr',尽管我认为这与我的问题没有直接关系),并且所需的输入(数据)之一是 data.frame。我使用以下方法(为说明而简化)从各种数据组成 data.frame:
#id, Time, and value are vectors created elsewhere in the code.
myData = data.frame(a=id, b=Time, c=value)
out <- mmlcr( input1, input2, data=myData, input4)
哪个会引发错误:
Error in is.data.frame(data) : object 'myData' not found
调试器指示在 mmlcr() 调用期间抛出了此错误。
然后我在 mmlcr() 调用之前添加了一个 print(ls()),并且输出确认“myData”在我的函数工作区中;进一步 is.data.frame(myData) 返回 TRUE。因此,似乎“myData”已成功创建,但由于某种原因,它没有正确传递到 mmlcr() 函数中。 (评论此行不会引发任何错误,所以我很确定这是有问题的行)。
然而,当我将完全相同的代码放入脚本(即不在功能块中)时,不会引发此类错误并且输出与预期一致。因此,我认为会出现一些范围界定问题。
我尝试了两种分配方法:
myData = data.frame(a=id, b=Time, c=value)
myData <- data.frame(a=id, b=Time, c=value)
两者都给我同样的错误。我承认我并不完全理解 R 中的范围模型(我已经阅读了 = 和 认为我明白了,但我不确定)。
如果您能提供任何建议,我们将不胜感激。
【问题讨论】:
-
我认为您需要发布您的功能作为对您的问题的更新,但您几乎可以肯定是正确的,问题是范围界定。让我确认一下:它作为一个函数工作,而不是作为一个脚本?通常情况会相反。无论如何,向我们展示一个最小的工作/不工作示例。
-
我问的原因是题主和'However'开头的段落冲突。
-
该错误是在函数内调用 mmlcr() 时发生的,而在脚本内不会发生。我不确定这与问题标题有何冲突。
-
你是对的:我看错了两次!