有经验的R用户如何处理此问题?有没有办法让错误致命或至少更明显?
答案 0 :(得分:2)
我知道有些人做的一件事就是运行R并将所有警告设置为抛出错误:
options(warn = 2)
> x <- "a"
> as.numeric(x)
Error: (converted from warning) NAs introduced by coercion
> sqrt(-1)
Error in sqrt(-1) : (converted from warning) NaNs produced
显然,这部分是品味问题。但是你应该知道,采用这种方法还将包括来自包的所有警告,其中作者可能或可能没有对应该产生警告的内容的合理定义。因此,您可能会遇到代码,这些代码会生成许多您实际上并不关心的警告。
然后你必须转向在suppressWarnings
中包装表达式,以明确地安静你认为无关紧要的那些。
答案 1 :(得分:0)
在我学习任何其他语言之前,我实际上开始使用R编程。我很快就知道尝试编写一个脚本然后运行它只是希望它可以工作是一个坏主意。相反,我会遵循这个过程:
通过这种方式,您可以检查每条线是否正在按照您的意愿行事,我认为这一点非常重要。
我常常在这里看到人们会做类似的问题:
MyVec = c(2, 4, 3, 5)
for(i in MyVec)
{
Sum = Sum + MyVec[i]
}
Average = Sum / length(Sum)
注意这样运行没有错误并产生错误的结果!如果他们只是花时间运行:
for(i in MyVec)
{
print(i)
}
他们会(a)看到他们的错误,并且(b)稍微了解一下R是如何工作的!