
(Acest articol a fost publicat pentru prima dată pe Terminarea geneticiiși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Repostat din original la https://blog.stephenturner.us/p/ctrlvee-extract-external-r-code-insert-inline-positron-rstudio-addin.
Te-ai găsit vreodată căutând o pagină pkgdown sau o carte Quarto, copiend și inserând bucăți de cod din browser în IDE-ul tău? Da, și este o supărare minoră.
Prietenul și colegul meu VP Nagraj a publicat un nou pachet R numit ctrlvee asta face asta mult mai usor.
Face un lucru. Puneți cursorul oriunde într-un script R în Positron sau RStudio, apelați programul de completare, furnizați o adresă URL și, câteva milisecunde mai târziu, veți avea tot codul din pagina respectivă în editorul dvs., separat de granițele de fragmente (împreună cu câteva metadate și o notă pentru verifica licenta!).
Pachetul README oferă o demonstrație folosind capitolul „Validarea datelor și QA” al meu Training pentru echipe Data Science carte (dstt.stephenturner.us).
-
Instalează pachetul:
install.packages("ctrlvee") -
Rulați programul de completare. În Positron, veți deschide paleta de comenzi, veți căuta Run RStudio Addin, apoi extrageți codul R extern și introduceți în linie. Veți primi un modal care vă va cere o adresă URL.
-
Lipiți unul. De exemplu, https://dstt.stephenturner.us/validation.html
-
Codul R de pe site apare în editorul tău 🚀
Iată un demo.
Iată cum arată codul extras/inserat, din această sursă.
# -----------------------------------------------------------------
# Chunks fetched by ctrlvee from: https://dstt.stephenturner.us/validation.html
# Strategy: Rendered HTML page
# Date: 2026-05-16 05:14:44
# Chunks: 8
# NOTE: Check the source license before reusing this code.
# -----------------------------------------------------------------
flu <- data.frame(
week = c(1, 2, 3, 4, 4),
county = c("Fairfax", "Arlington", NA, "Loudoun", "Loudoun"),
disease = c("Flu", "Flu", "Flu", "Flu", "Flu"),
cases = c(23, 41, 18, -5, 12),
rate = c(2.1, 3.8, 1.6, NA, 1.1)
)
flu
# ---- chunk boundary ----
if (any(flu$cases < 0, na.rm = TRUE)) {
stop("Negative case counts detected. Inspect raw data before proceeding.")
}
# ---- chunk boundary ----
stopifnot(
"Negative case counts" = all(flu$cases >= 0, na.rm = TRUE),
"Missing county values" = !anyNA(flu$county),
"Duplicate records" = !anyDuplicated(flu(, c("week", "county")))
)
# ---- chunk boundary ----
install.packages("pointblank")
# ---- chunk boundary ----
library(pointblank)
agent <- create_agent(tbl = flu, label = "Weekly flu surveillance") |>
col_vals_gte(
columns = cases,
value = 0,
label = "Case counts must be non-negative"
) |>
col_vals_not_null(
columns = c(week, county),
label = "Week and county cannot be missing"
) |>
rows_distinct(
columns = c(week, county),
label = "No duplicate week/county records"
) |>
interrogate()
agent
# ---- chunk boundary ----
create_agent(tbl = flu, label = "Weekly flu surveillance — extended") |>
col_is_numeric(
columns = c(cases, rate),
label = "Case count and rate must be numeric"
) |>
col_vals_in_set(
columns = disease,
set = c("Flu", "COVID-19", "RSV"),
label = "Disease must be from the approved list"
) |>
col_vals_between(
columns = week,
left = 1,
right = 52,
label = "Week must be between 1 and 52"
) |>
col_vals_gte(
columns = rate,
value = 0,
na_pass = TRUE,
label = "Rate must be non-negative (NAs allowed)"
) |>
interrogate()
# ---- chunk boundary ----
if (!all_passed(agent)) {
stop("Data validation failed. Review the agent report before proceeding.")
}
# ---- chunk boundary ----
library(readr)
library(pointblank)
flu <- read_csv("data/flu-2024.csv")
# Validate immediately after reading
agent <- create_agent(tbl = flu, label = "flu-2024 validation") |>
col_vals_gte(columns = cases, value = 0, label = "No negative counts") |>
col_vals_not_null(columns = c(week, county), label = "No missing keys") |>
rows_distinct(columns = c(week, county), label = "No duplicate records") |>
interrogate()
if (!all_passed(agent)) {
stop("Validation failed — see agent report above.")
}