我对 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 中的范围模型(我已经阅读了 = 和 <- 之间的区别,我想我明白了,但我不确定)。
您可以提供的任何建议将不胜感激。