8.3 魔鬼(no.31~no.32)
8.3.31 语法错误
语法错误是个很常见的问题,尤其对于新的使用者。不幸的是除了令人费解之外,并没有好的方法来解决。最常见的问题是不匹配的括号、方括号,确实逗号。
使用一个可以高亮语法的编辑器可以消除很多问题。
这是一个特别讨厌的错误:
> lseq <- seq(0, 1, 1ength=10)
Error: unexpected input in "seq(0, 1, 1en"
提示:错误信息的最后是一个重要的定位。事实上,输出的最后的字符就是它所知道的错误的开始地方。
8.3.32 普遍的困惑
如果你得到的结果完全跟你的预期不同,看看你在第几步上:
- 对象可能和你期望的不同。你可以使用
str
来诊断。(str
的输出可能不会很快产生意义,但是聊胜于无。) - 函数可能和你期望的不同。试着使用
conflicts
进行诊断。 - 几乎唯一剩下的就是你的期望。
browser
,cat
和debugger
的调用能帮助你消除幽灵、喀迈拉和魔鬼。但是最强大的工具是你的怀疑精神。