Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions examples/loader-r-to-zip/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.DS_Store
/dist/
node_modules/
yarn-error.log
.Rhistory
.RData
9 changes: 9 additions & 0 deletions examples/loader-r-to-zip/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Framework examples →](../)

# R data loader to generate a ZIP archive

View live: <https://observablehq.observablehq.cloud/framework-example-loader-r-to-zip/>

This Observable Framework example demonstrates how to write an R data loader that accesses penguin body size measurements, performs multiple linear regression, then outputs model estimates and predictions as two separate CSV files in a ZIP archive.

The data loader lives in [`src/data/penguin-mlr.zip.R`](./src/data/penguin-mlr.zip.R).
3 changes: 3 additions & 0 deletions examples/loader-r-to-zip/observablehq.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default {
root: "src"
};
20 changes: 20 additions & 0 deletions examples/loader-r-to-zip/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"type": "module",
"private": true,
"scripts": {
"clean": "rimraf src/.observablehq/cache",
"build": "rimraf dist && observable build",
"dev": "observable preview",
"deploy": "observable deploy",
"observable": "observable"
},
"dependencies": {
"@observablehq/framework": "^1.7.0"
},
"devDependencies": {
"rimraf": "^5.0.5"
},
"engines": {
"node": ">=18"
}
}
1 change: 1 addition & 0 deletions examples/loader-r-to-zip/src/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.observablehq/cache/
27 changes: 27 additions & 0 deletions examples/loader-r-to-zip/src/data/penguin-mlr.zip.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Attach required packages (must be installed)
library(readr)
library(tidyr)
library(dplyr)
library(broom)

# Data access, wrangling and analysis
penguins <- read_csv("src/data/penguins.csv") |>
drop_na(body_mass_g, species, sex, flipper_length_mm, culmen_depth_mm)

penguins_mlr <- lm(body_mass_g ~ species + sex + flipper_length_mm + culmen_depth_mm, data = penguins)

mlr_est <- tidy(penguins_mlr)

mlr_fit <- penguins |>
mutate(
predicted_mass = penguins_mlr$fitted.values,
residual = penguins_mlr$residuals
)

# Write the data frames as CSVs to a temporary directory
setwd(tempdir())
write_csv(mlr_est, "estimates.csv")
write_csv(mlr_fit, "predictions.csv")

# Zip the contents of the temporary directory
system("zip - -r .")
Loading