如何在 R 中设置错误消息的宽度?
How to set the width of an error message in R?
我知道你可以设置 R 输出的宽度
> options(width = 20)
> 1:30
[1] 1 2 3 4 5
[6] 6 7 8 9 10
[11] 11 12 13 14 15
[16] 16 17 18 19 20
[21] 21 22 23 24 25
[26] 26 27 28 29 30
如何将错误消息设置为宽度 20?
> options(width = 20)
> IWantMyErrorMessageToBeWidth20
Error: object 'IWantMyErrorMessageToBeWidth20' not found
这个问题对我来说很有趣,我想试着回答一下。有不对的地方还请指正
当你运行1:30
时,R会在屏幕后面执行print(1:30)
(或者更具体地说,print.default(1:30)
)。在这个函数内部调试,你会发现如果不提供一个参数width,它会直接使用options()
中设置的宽度。要更改 print()
的输出,您可以更改 options()
中的宽度或编写类似 print(1:30, width=10)
的代码。因此,可以在代码中控制宽度。
然而,IWantMyErrorMessageToBeWidth20
是用另一种方式处理的。我假设 R 会首先检查 IWantMyErrorMessageToBeWidth20
是否存在于内存中,发现没有对象叫 IWantMyErrorMessageToBeWidth20
,然后触发 R 解释器中的内部停止函数。我想内部停止函数中没有宽度参数。
因此,我建议您听从 Allan 的建议。
如评论中所述,您可以像这样捕获错误并进行处理
tryCatch(
IWantMyErrorMessageToBeWidth20,
error = function(err) {
msg <- conditionMessage(err)
stop(substr(as.character(msg), 1, 20), call. = FALSE)
}
)
# Error: object 'IWantMyError
我知道你可以设置 R 输出的宽度
> options(width = 20)
> 1:30
[1] 1 2 3 4 5
[6] 6 7 8 9 10
[11] 11 12 13 14 15
[16] 16 17 18 19 20
[21] 21 22 23 24 25
[26] 26 27 28 29 30
如何将错误消息设置为宽度 20?
> options(width = 20)
> IWantMyErrorMessageToBeWidth20
Error: object 'IWantMyErrorMessageToBeWidth20' not found
这个问题对我来说很有趣,我想试着回答一下。有不对的地方还请指正
当你运行1:30
时,R会在屏幕后面执行print(1:30)
(或者更具体地说,print.default(1:30)
)。在这个函数内部调试,你会发现如果不提供一个参数width,它会直接使用options()
中设置的宽度。要更改 print()
的输出,您可以更改 options()
中的宽度或编写类似 print(1:30, width=10)
的代码。因此,可以在代码中控制宽度。
然而,IWantMyErrorMessageToBeWidth20
是用另一种方式处理的。我假设 R 会首先检查 IWantMyErrorMessageToBeWidth20
是否存在于内存中,发现没有对象叫 IWantMyErrorMessageToBeWidth20
,然后触发 R 解释器中的内部停止函数。我想内部停止函数中没有宽度参数。
因此,我建议您听从 Allan 的建议。
如评论中所述,您可以像这样捕获错误并进行处理
tryCatch(
IWantMyErrorMessageToBeWidth20,
error = function(err) {
msg <- conditionMessage(err)
stop(substr(as.character(msg), 1, 20), call. = FALSE)
}
)
# Error: object 'IWantMyError