Skip to content

Commit a508a36

Browse files
committed
reshape pca to report_document
1 parent ea33026 commit a508a36

File tree

1 file changed

+87
-34
lines changed

1 file changed

+87
-34
lines changed

R/tm_a_pca.R

Lines changed: 87 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,6 @@ ui_a_pca <- function(id, ...) {
235235
uiOutput(ns("all_plots"))
236236
),
237237
encoding = tags$div(
238-
### Reporter
239-
teal.reporter::simple_reporter_ui(ns("simple_reporter")),
240-
###
241238
tags$label("Encodings", class = "text-primary"),
242239
teal.transform::datanames_input(args["dat"]),
243240
teal.transform::data_extract_ui(
@@ -478,7 +475,7 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
478475
})
479476

480477
# computation ----
481-
computation <- reactive({
478+
computation_model <- reactive({
482479
validation()
483480

484481
# inputs
@@ -504,24 +501,26 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
504501
)
505502
}
506503

507-
qenv <- teal.code::eval_code(
504+
teal.code::eval_code(
508505
qenv,
509506
substitute(
510507
expr = pca <- summary(stats::prcomp(ANL[keep_columns], center = center, scale. = scale, retx = TRUE)),
511508
env = list(center = center, scale = scale)
512509
)
513510
)
514-
515-
qenv <- teal.code::eval_code(
516-
qenv,
511+
})
512+
computation_tbl_imp <- reactive({
513+
teal.code::eval_code(
514+
computation_model(),
517515
quote({
518516
tbl_importance <- dplyr::as_tibble(pca$importance, rownames = "Metric")
519517
tbl_importance
520518
})
521519
)
522-
520+
})
521+
computation <- reactive({
523522
teal.code::eval_code(
524-
qenv,
523+
computation_tbl_imp(),
525524
quote({
526525
tbl_eigenvector <- dplyr::as_tibble(pca$rotation, rownames = "Variable")
527526
tbl_eigenvector
@@ -1124,6 +1123,50 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
11241123
})
11251124

11261125
# Render R code.
1126+
subset_code <- function(code, data) {
1127+
gsub(code, "", teal.data::get_code(data), fixed = TRUE)
1128+
}
1129+
setup_code_r <- reactive(teal.data::get_code(qenv))
1130+
data_prep_code_r <-
1131+
reactive(
1132+
subset_code(
1133+
setup_code_r(),
1134+
req(anl_merged_q())
1135+
)
1136+
)
1137+
1138+
computation_model_code_r <-
1139+
reactive(
1140+
subset_code(
1141+
paste0(setup_code_r(), data_prep_code_r()),
1142+
req(computation_model())
1143+
)
1144+
)
1145+
1146+
computation_tbl_imp_code_r <-
1147+
reactive(
1148+
subset_code(
1149+
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r()),
1150+
req(computation_tbl_imp())
1151+
)
1152+
)
1153+
1154+
computation_tbl_eig_code_r <-
1155+
reactive(
1156+
subset_code(
1157+
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r()),
1158+
req(computation())
1159+
)
1160+
)
1161+
1162+
plot_code_r <-
1163+
reactive(
1164+
subset_code(
1165+
paste0(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation_tbl_imp_code_r(), computation_tbl_eig_code_r()),
1166+
req(decorated_output_q())
1167+
)
1168+
)
1169+
11271170
source_code_r <- reactive(teal.code::get_code(req(decorated_output_q())))
11281171

11291172
teal.widgets::verbatim_popup_srv(
@@ -1132,30 +1175,40 @@ srv_a_pca <- function(id, data, reporter, filter_panel_api, dat, plot_height, pl
11321175
title = "R Code for PCA"
11331176
)
11341177

1135-
### REPORTER
1136-
if (with_reporter) {
1137-
card_fun <- function(comment, label) {
1138-
card <- teal::report_card_template(
1139-
title = "Principal Component Analysis Plot",
1140-
label = label,
1141-
with_filter = with_filter,
1142-
filter_panel_api = filter_panel_api
1143-
)
1144-
card$append_text("Principal Components Table", "header3")
1145-
card$append_table(computation()[["tbl_importance"]])
1146-
card$append_text("Eigenvectors Table", "header3")
1147-
card$append_table(computation()[["tbl_eigenvector"]])
1148-
card$append_text("Plot", "header3")
1149-
card$append_plot(plot_r(), dim = pws$dim())
1150-
if (!comment == "") {
1151-
card$append_text("Comment", "header3")
1152-
card$append_text(comment)
1153-
}
1154-
card$append_src(source_code_r())
1155-
card
1156-
}
1157-
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
1158-
}
1178+
card_fun <- reactive({
1179+
req(setup_code_r(), data_prep_code_r(), computation_model_code_r(), computation(),
1180+
computation_tbl_imp_code_r(), computation_tbl_eig_code_r(), plot_code_r(), plot_r())
1181+
1182+
teal.reporter::report_document(
1183+
1184+
"## Setup",
1185+
teal.reporter::code_chunk(setup_code_r()),
1186+
1187+
"## Data Preparations",
1188+
teal.reporter::code_chunk(data_prep_code_r()),
1189+
1190+
"## PCA Model",
1191+
teal.reporter::code_chunk(computation_model_code_r()),
1192+
1193+
"### Principal Components Table",
1194+
teal.reporter::code_chunk(computation_tbl_imp_code_r()) |>
1195+
teal.reporter::link_output(computation()[["tbl_importance"]]),
1196+
1197+
"### Eigenvectors Table",
1198+
teal.reporter::code_chunk(computation_tbl_eig_code_r()) |>
1199+
teal.reporter::link_output(computation()[["tbl_eigenvector"]]),
1200+
1201+
"### Plot",
1202+
teal.reporter::code_chunk(
1203+
plot_code_r() |> styler::style_text() |> paste(collapse = "\n")
1204+
) |>
1205+
teal.reporter::link_output(plot_r())
1206+
)
1207+
})
1208+
11591209
###
1210+
list(
1211+
report_card = card_fun
1212+
)
11601213
})
11611214
}

0 commit comments

Comments
 (0)