我已经遇到了R中.Traceback
对象的奇怪行为。
当我尝试打印简短错误消息时,就可以了,并且.Traceback[[1]]
具有一个元素。但是,当我尝试打印很长的字符串时,.Traceback[[1]]
对象成为两个元素的列表。看:
>stop(paste("short", "string"))
Error: short string
>.Traceback
[[1]]
[1] "stop(paste(\"short\", \"string\"))"
>stop(paste("very loooooooooooooooooooooooooooooooooooooooooooooooooooooong", "string"))
Error: very loooooooooooooooooooooooooooooooooooooooooooooooooooooong string
>.Traceback
[[1]]
[1] "stop(paste(\"very loooooooooooooooooooooooooooooooooooooooooooooooooooooong\", "
[2] " \"string\"))"
你能帮我弄清楚吗?我对这种意外行为感到非常困惑。
最佳答案
你能帮我弄清楚吗?
似乎受options(width)
影响
stop(paste("very loooooooooooooooooooooooooooooooooooooooooooooooooooooong", "string"))
.Traceback
#R [[1]]
#R [1] "stop(paste(\"very loooooooooooooooooooooooooooooooooooooooooooooooooooooong\", "
#R [2] " \"string\"))"
options(width = 9001)
stop(paste("very loooooooooooooooooooooooooooooooooooooooooooooooooooooong", "string"))
.Traceback
#R [[1]]
#R [1] "stop(paste(\"very loooooooooooooooooooooooooooooooooooooooooooooooooooooong\", " " \"string\"))"
但是,从帮助页面尚不清楚。虽然是用
help(".Traceback")
编写的call 可能会打印在多条线路上,...
还要从
help(".Traceback")
注意到警告
它没有记录
.Traceback
的存储位置,也没有显示,并且会随时更改。所以很可能改用
traceback()
tr <- traceback()
all.equal(tr, .Traceback)
#R [1] TRUE
关于r - 为什么.Traceback将长字符串分成两部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51405549/