我明白了:
Error in paste0(width, on, k) : object 'x' not found
我完全困惑为什么它在这条特定的行上抱怨“x”!
on
是字符,width
是k
数字。x
存在(它是这个函数的一个参数)。该行和前面的行看起来像:
print(index(x))
stopifnot(length(index(x))>=1)
#str(on);str(k);str(width)
extra=list( paste0(width,on,k) )
但更奇怪的是,当我添加注释掉的行时,它反而抱怨:
Error in str(on) : object 'x' not found
触发这个问题的原因是我添加了这行代码:
rm(x)
(rm(list=c("x"))
给出相同的行为。)
所以,我期待一个“x not found”错误。但不在该行(甚至不在该函数中)!
背景:我发现了一个错误,其中代码依赖于一个名为 的全局变量x
,该变量应该作为参数传递。它在单元测试中有效,在实际代码中失败,因为有问题的变量在实际代码中没有被称为“x”!!因此,我决定在完成每个变量后显式删除它,以发现我是否还有此类错误。
(如果上面的代码片段不足以让某人去“啊哈,达伦,你仍然不明白 R 是如何工作的……”,我将尝试创建一个最小的示例来重现该问题。)