В файле справки для browser
есть два варианта, которые кажутся очень похожими:
f
завершить выполнение текущего цикла или функции
c
выйти из браузера и продолжить выполнение в следующем операторе.
В чем разница между ними и в каких ситуациях разница очевидна?
Некоторые подсказки о том, что может быть разницей - я написал script под названием browse.R
со следующим содержимым:
for (i in 1:2){
browser()
print(i)
}
Это результаты использования c
vs f
:
> source("browse.R")
Called from: eval(expr, envir, enclos)
Browse[1]> c
[1] 1
Called from: eval(expr, envir, enclos)
Browse[1]> c
[1] 2
> source("browse.R")
Called from: eval(expr, envir, enclos)
Browse[1]> f
[1] 1
Browse[2]> f
[1] 2
Обратите внимание, что уровень Browse[n]
изменяется. Это все еще не подчеркивает каких-либо практических различий между ними.
Я также попытался выяснить, исчезли бы вещи из среды браузера:
for (i in 1:2){
a <- "not modified"
browser()
print(a)
}
Called from: top level
Browse[1]> a <- "modified"
Browse[1]> f
[1] "modified"
Browse[1]> a
[1] "not modified"
Browse[1]> a <- "modified"
Browse[1]> c
[1] "modified"
Таким образом, нет никакой разницы.