gpt4 book ai didi

r - 如何仅在满足条件时启动调试器

转载 作者:行者123 更新时间:2023-12-04 23:13:48 27 4
gpt4 key购买 nike

假设我有一个使用整数循环的函数 i .现在出了点问题,我认为错误发生在 i=5 时.现在我可以逐步完成每一步(到目前为止我所做的)。

但现在我读到了 conditiontext browser 的论据和 debug :

text a text string that can be retrieved when the browser is entered.
condition a condition that can be retrieved when the browser is entered.



是否可以按照我想要的方式使用参数?

这是一个例子。调试器/浏览器应该只在 i=5 之后启动到达了:
fun <- function(x, y, n) {
result <- 0
for (i in 1:n) {
# browser(condition = (i == 5)) # does not work
result <- result + i * ( x + y)
}
return(result)
}

x <- 2
y <- 3
n <- 10

# debug(fun, condition = (i == 5)) # does not work
debug(fun)
r <- fun(x, y, n)
print(r)

解决方案
if (i == 5) { # inside loop of fun()
browser()
}

正在工作,但我认为可能有更好的东西(函数内没有额外的代码)

最佳答案

您可以使用参数 exprbrowser() :

fun <- function(x, y, n) {
result <- 0
for (i in 1:n) {
browser(expr = {i == 5})
result <- result + i * ( x + y)
}
return(result)
}

然后它只会打开 browser() 所在的环境。如果表达式的计算结果为 TRUE,则被调用.

如果您想使用 debug() :
debug(fun, condition = i == 5)

然后调用函数:
fun <- function(x, y, n) {
result <- 0
for (i in 1:n) {
result <- result + i * ( x + y)
}
return(result)
}

fun(x, y, n)

关于r - 如何仅在满足条件时启动调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49008890/

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