gpt4 book ai didi

r - 如何将警告()输出到字符串

转载 作者:行者123 更新时间:2023-12-03 07:38:18 25 4
gpt4 key购买 nike

当我输入警告()到控制台时,我回来了

Warning message:
In fread(my_directory, ... :
C function strtod() returned ERANGE for one or more fields. The first was string input '4.40589099726375E-309'. It was read using (double)strtold() as numeric

但是,当我输入 as.character(warnings()) 时,我得到:
[1] "fread(my_directory)"

我的目标是将 warning() 中显示的实际消息转换为字符串,以便我可以将其传递给 logwarn logging 中的函数包裹。目前,我正在做 logwarn(warnings(),logger="some_log_file.log")记录我的警告,但它给了 character 不正确的强制我在上面显示的。

请注意,我只能使用 sink但我想坚持 logging包,所以我需要能够纠正强制到 character .

最佳答案

这可能不是您正在寻找的确切答案,但我认为值得一提。

R 有一个全局变量,last.warning ,这就是最后一个警告。调用 names它将以字符串形式返回最后一个警告。这是一个小例子

首先,故意触发警告:

x <- 1:5
if(x == 1) "yes" else "no"
# [1] "yes"
# Warning message:
# In if (x == 1) "yes" else "no" :
# the condition has length > 1 and only the first element will be used

查看变量 last.warning :
last.warning
# $`the condition has length > 1 and only the first element will be used`
# if (x == 1) "yes" else "no"

现在看看 names(last.warning) .这将警告作为字符串返回:
names(last.warning)
# [1] "the condition has length > 1 and only the first element will be used"

关于r - 如何将警告()输出到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25323030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com