gpt4 book ai didi

r - 在循环中使用geterrmessage()-R

转载 作者:行者123 更新时间:2023-12-03 07:53:35 24 4
gpt4 key购买 nike

我的目的是捕获R引发的错误并将其存储在对象中。

以下是一些伪代码:

for(i in 1:length(a)){try(
if (i==4)(print(a[i]/"b"))else(print(a[i]/b[i]))
)}

[1] -0.125
[1] -0.2857143
[1] -0.5
Error in a[i]/"b" : non-numeric argument to binary operator
[1] -1.25
[1] -2
[1] -3.5
[1] -8
[1] Inf
[1] 10

所以我想在第4次迭代中捕捉到错误是: Error in a[i]/"b" : non-numeric argument to binary operator变成对象说:
error<-()
iferror(error[i]<-geterrmessage())

我知道R中没有iferror作为函数,但是我想给出这个主意,因为 geterrmessage仅捕获它看到的最后一个错误。

所以对于这个例子,我想说 error[1:3]<-'NA'error[5:10]<-'NA',因为没有错误,但是
error[4]<-"Error in a[i]/"b" : non-numeric argument to binary operator"

这样以后我就可以检查 error对象并了解在哪里发生了什么错误

如果您能帮助我编写出色且受人赞赏的代码

最佳答案

希望以下功能有所帮助:

a <- c(0:6)
b <- c(-3:3)

create_log <- function(logfile_name, save_path) {
warning("Error messages not visible. Use closeAllConnections() in the end of the script")
if (file.exists(paste0(save_path, logfile_name))) {
file.remove(paste0(save_path, logfile_name))
}
fid <- file(paste0(save_path, logfile_name), open = "wt")
sink(fid, type = "message", split = F) # warnings are NOT displayed. split=T not possible.
sink(fid, append = T, type = "output", split = T) # print, cat
return(NULL)
}


create_log("test.csv", "C:/Test/")
for(i in 1:length(a)){try(
if (i==4)(print(a[i]/"b"))else(print(a[i]/b[i]))
)}
closeAllConnections()

关于r - 在循环中使用geterrmessage()-R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41056653/

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