gpt4 book ai didi

R 'object XX not found' 函数内部抛出错误,但不在脚本中

转载 作者:行者123 更新时间:2023-12-01 14:10:57 27 4
gpt4 key购买 nike

我是 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() 函数中。 (注释这一行不会引发任何错误,所以我很确定这是有问题的行)。

但是,当我将完全相同的代码放入脚本中时(即不在功能 block 中),不会抛出此类错误并且输出符合预期。因此,我假设出现了一些范围界定问题。

我已经尝试了两种赋值方法:

myData = data.frame(a=id, b=Time, c=value)  
myData <- data.frame(a=id, b=Time, c=value)

两者都给我同样的错误。我承认我并不完全理解 R 中的作用域模型(我已经阅读了 = 和 <- 之间的区别并且我认为我明白了,但我不确定)。

如果您能提供任何建议,我们将不胜感激。

最佳答案

MMLCR 现已弃用,您应该寻找一些替代方案。没有过多地研究它,我调查了一个旧的 repo 并找到了罪魁祸首:

m <- eval(m, data)

在函数 mmlcr.default 中。这不好的原因有很多,但范围界定是最重要的。 R 在 subset.data.frame 函数中存在这个问题,请参阅我的 old SO question .我不会修改源代码,而是会找到一种方法,通过使用 forrepeatwhile 循环的子例程来执行您的功能。

关于R 'object XX not found' 函数内部抛出错误,但不在脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com