#r
#r
Вопрос:
Проблема
Я пытаюсь просмотреть функцию, используя новый flow
пакет, следующим образом:
Определение функции
library(tibble)
calculate_decc <- function(initial_DV,
initial_frspacing,
standstill_frspacing,
t,
nrows,
LV_acc_mps2,
den){
D_first <- ((initial_DV)^2) / (den * (standstill_frspacing - initial_frspacing)) LV_acc_mps2[1]
# D_reqd <- existing_decc D_first
DV <- vector(mode = "double", length = nrows)
DV[1] <- initial_DV
D <- vector(mode = "double", length = nrows)
D[1] <- D_first
Z <- vector(mode = "double", length = nrows)
Z[1] <- initial_frspacing
for (i in 2:nrows) {
DV[i] <- DV[i-1] ((D[i-1] - LV_acc_mps2[i-1]) * t)
Z[i] <- Z[i-1] - ((DV[i-1] * t) (0.5 * (D[i-1]-LV_acc_mps2[i-1]) * t^2))
D[i] <- ((DV[i])^2) / (den * (standstill_frspacing - Z[i])) LV_acc_mps2[i]
}
return(tibble(DV, Z, D))
}
Просмотр функции с помощью flow
:
flow_run(calculate_decc(initial_DV = 25,
initial_frspacing =200,
standstill_frspacing=10,
t=1/60,
nrows=1000,
LV_acc_mps2=vector(mode = "double", length = 1000),
den=2),
, browse = TRUE)
Ошибка:
> flow_run(calculate_decc(initial_DV = 25,
initial_frspacing =200,
standstill_frspacing=10,
t=1/60,
nrows=1000,
LV_acc_mps2=vector(mode = "double", length = 1000),
den=2),
, browse = TRUE)
Next block: standard
D_first <- ((initial_DV)^2)/(den * (standstill_frspacing - initial_frspacing)) ; LV_acc_mps2[1];DV <- vector(mode = "double", length = nrows);DV[1] <- initial_DV;D <- vector(mode = "double", length = nrows);D[1] <- D_first;Z <- vector(mode = "double", length = nrows);Z[1] <- initial_frspacing
flow_browser[1]>
Next block: for
for (i in 2:nrows)
flow_browser[2]>
Error: object 'DV' not found
Что я пробовал:
Моя функция работает при запуске вне flow
:
> calculate_decc(initial_DV = 25,
initial_frspacing =200,
standstill_frspacing=10,
t=1/60,
nrows=1000,
LV_acc_mps2=vector(mode = "double", length = 1000),
den=2)
# A tibble: 1,000 x 3
DV Z D
<dbl> <dbl> <dbl>
1 25 200 -1.64
2 25.0 200. -1.64
3 24.9 199. -1.64
4 24.9 199. -1.64
5 24.9 198. -1.64
6 24.9 198. -1.64
7 24.8 198. -1.64
8 24.8 197. -1.64
9 24.8 197. -1.64
10 24.8 196. -1.64
# ... with 990 more rows
Чего я здесь не понимаю?
Ответ №1:
flow::flow_run()
к сожалению, было много проблем, извините за это.
Пожалуйста, переустановите пакет, и следующее должно сработать.
library(tibble)
# remotes::install_github("moodymudskipper/flow")
library(flow)
flow_run(calculate_decc(initial_DV = 25,
initial_frspacing =200,
standstill_frspacing=10,
t=1/60,
nrows=1000,
LV_acc_mps2=vector(mode = "double", length = 1000),
den=2), browse = TRUE)
Это запустит браузер внутри тела вашей функции, за исключением того, что вы заметите несколько flow::update()
вызовов, которые автоматически обновляют данные диаграммы.
Всякий раз, когда вы хотите нарисовать диаграмму текущей ситуации, вызывайте d
без круглых скобок (если d
значение переопределяется переменной, используйте flow_draw()
для того же эффекта).
Комментарии:
1. Это здорово. Спасибо вам за этот пакет и ваши постоянные улучшения.