gpt4 book ai didi

r - 在 R 中使用 doParallel 时,如何获取引发错误的行号?

转载 作者:行者123 更新时间:2023-12-04 09:42:59 29 4
gpt4 key购买 nike

我正在尝试弄清楚在使用 foreach 和 doParallel 时如何查明引发错误的行。这是一个例子:

foreach.example <- function() 
{
require("doParallel")
z <- foreach (i = 1:2) %do%
{
x <- i + 'a'
}
return(z)
}

所以在 %do% 中有一个错误,我在其中向数字添加了一个字符。 (我在这里所说的一切也适用于 %dopar%)。当我运行它时,我得到:

> foreach.example()
Error in { (from test_foreach.R#3) : task 1 failed - "non-numeric argument to binary operator"

我无法从这里判断出循环中的错误行 3 是 foreach 行,而不是有问题的行。当我运行 debugger() 时,我得到:

> debugger()
Message: Error in { (from test_foreach.R#3) : task 1 failed - "non-numeric argument to binary operator"
Available environments had calls:
1: foreach.example()
2: test_foreach.R#3: foreach(i = 1:2) %do% {
x <- i + "a"
}
3: e$fun(obj, substitute(ex), parent.frame(), e$data)
4: stop(simpleError(msg, call = expr))

请注意,第 2 帧通常会指示整个循环,因此我无法找到实际引发错误的那一行。

如果我在没有 foreach 的情况下运行它,我会得到有用的信息:

regular.example <- function() 
{
z <- list()
for (i in 1:2) {
x <- i + 'a'
z <- c(z, list(x))
}
return(z)
}

>regular.example()
Error in i + "a" (from test_foreach.R#12) : non-numeric argument to binary operator

然后调试器将我带到抛出异常的代码行。

关于在使用 foreach 时如何识别异常行号的任何想法?谢谢。

最佳答案

尝试修改您的 foreach 调用以包含 .verbose = TRUE

z <- foreach (i = 1:2, .verbose = T) %do% ...

关于r - 在 R 中使用 doParallel 时,如何获取引发错误的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748008/

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