Guide for creating DAAF agent definition files. Covers 12-section template, hook registration, skills-in-frontmatter, integration checklist. Use when adding or revising agents. For SKILL.md files, use skill-authoring instead.
中文简介正在准备中。当前显示原文说明。
Python-to-R translation for data analysis. Maps Python (polars, plotnine, pyfixest, statsmodels, svy, geopandas) to R (tidyverse, ggplot2, fixest, survey, sf). Use when user has Python background or requests Python-equivalent code comments in R pipelines.
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
Python-to-R translation reference for quantitative social science data analysis. Maps Python ecosystem packages (polars, plotnine, pyfixest, statsmodels, linearmodels, svy, geopandas, scikit-learn) to R equivalents (tidyverse/dplyr, ggplot2, fixest, base R stats, plm, lme4, survey, sf, terra, tidymodels). Use when user mentions Python background, requests Python-equivalent code comments in R pipelines, needs to understand R analysis code from a Python perspective, or wants to translate Python data analysis concepts to R. Covers paradigm differences, verb-by-verb operation translations, regression modeling, causal inference, visualization, and workflow adaptation.
Cross-language translation reference for researchers moving between the Python and R data analysis ecosystems. This skill maps Python packages, idioms, and workflows to their DAAF R equivalents so that Python-background users can audit, understand, and learn from DAAF-produced R code, and so that code-producing agents can annotate their output with Python equivalents when directed.
This skill is a routing hub -- it provides overview tables, decision trees, and directs readers to the detailed reference files listed below. The reference files contain the exhaustive verb-by-verb mappings, code examples, and edge-case documentation.
Use cases:
Each topic in ./references/ contains focused documentation:
| File | Purpose | When to Read |
|---|---|---|
paradigm-differences.md | Core language and paradigm differences | Encountering fundamental R-vs-Python confusion |
dplyr-polars.md | Core dplyr/tidyr verbs explained for polars users (filter, mutate, joins, reshaping, window functions, piping) | Reading or writing data manipulation code |
strings-dates-factors.md | String, date/time, and factor operations (stringr, lubridate, forcats for polars users) | Working with string/date/categorical columns |
regression-modeling.md | fixest/stats/plm explained for pyfixest/statsmodels/linearmodels users | Reading or writing regression code |
visualization.md | ggplot2/plotly R explained for plotnine/plotly Python users | Reading or writing visualization code |
causal-inference.md | R causal inference ecosystem explained for Python users | Working with DiD, RDD, IV, event studies |
survey-spatial-ml.md | survey/sf/tidymodels explained for svy/geopandas/scikit-learn users | Working with surveys, spatial data, or ML |
workflow-environment.md | DAAF/R workflow explained for Python-background users | Adapting to DAAF's R execution model |
external-resources.md | Curated guides and tutorials with provenance | Seeking additional learning materials |
gotchas.md | Common Python-user mistakes in R | Debugging or reviewing code from Python perspective |
paradigm-differences.md then the relevant domain file (e.g., dplyr-polars.md for data wrangling, regression-modeling.md for models) then gotchas.mdparadigm-differences.md then dplyr-polars.md then workflow-environment.md then external-resources.mdWhat kind of R operation?
|-- Data wrangling (filter, mutate, join, pivot, summarise)
| +-- ./references/dplyr-polars.md
|-- Regression / statistical modeling
| +-- ./references/regression-modeling.md
|-- Plotting / visualization
| +-- ./references/visualization.md
|-- Causal inference (DiD, RDD, IV, event studies)
| +-- ./references/causal-inference.md
|-- Surveys / spatial / machine learning
| +-- ./references/survey-spatial-ml.md
+-- Fundamental language differences (types, syntax, environment)
+-- ./references/paradigm-differences.md
What looks unfamiliar?
|-- Pipe operator (|>)
| +-- ./references/paradigm-differences.md
|-- Formula interface (y ~ x1 + x2)
| +-- ./references/regression-modeling.md
|-- Unquoted column names in functions
| +-- ./references/paradigm-differences.md
|-- library() loads everything
| +-- ./references/gotchas.md
|-- factor() and levels
| +-- ./references/paradigm-differences.md
|-- <- for assignment
| +-- ./references/gotchas.md
+-- Interactive console / RStudio workflow
+-- ./references/workflow-environment.md
Which Python package?
|-- polars --> dplyr + tidyr + data.table
| +-- ./references/dplyr-polars.md
|-- plotnine --> ggplot2
| +-- ./references/visualization.md
|-- plotly (Python) --> plotly (R)
| +-- ./references/visualization.md
|-- pyfixest --> fixest
| +-- ./references/regression-modeling.md
|-- statsmodels (OLS, GLM) --> base R stats (lm, glm) + lmtest + sandwich
| +-- ./references/regression-modeling.md
|-- linearmodels (panel, IV) --> plm + estimatr
| +-- ./references/regression-modeling.md
|-- statsmodels MixedLM --> lme4 (lmer)
| +-- ./references/regression-modeling.md
|-- svy --> survey (Lumley)
| +-- ./references/survey-spatial-ml.md
|-- geopandas --> sf + terra
| +-- ./references/survey-spatial-ml.md
|-- scikit-learn --> tidymodels / caret
| +-- ./references/survey-spatial-ml.md
|-- marginaleffects (Python) --> marginaleffects (R)
| +-- ./references/regression-modeling.md
|-- rdrobust (Python) --> rdrobust (R)
| +-- ./references/causal-inference.md
+-- marimo --> Quarto / RMarkdown
+-- ./references/workflow-environment.md
What went wrong?
|-- Used = instead of <- for assignment
| +-- ./references/gotchas.md
|-- 0-indexed access gave wrong element
| +-- ./references/gotchas.md
|-- Used True/False instead of TRUE/FALSE
| +-- ./references/gotchas.md
|-- Missing value handling surprised me (NA vs None/NaN)
| +-- ./references/paradigm-differences.md
|-- import vs library() confusion
| +-- ./references/gotchas.md
|-- Expected method chaining, got pipe errors
| +-- ./references/paradigm-differences.md
+-- Model output structure is different
+-- ./references/regression-modeling.md
| R Package | Python Equivalent | Fidelity | Key Difference |
|---|---|---|---|
| dplyr + tidyr | polars | Low | Verb grammar vs expression system; pipe vs method chaining |
| fixest | pyfixest | High | Near-identical formula syntax; minor SE default differences |
| ggplot2 | plotnine | High | Same grammar of graphics; bare names vs string quoting for aes |
| plotly (R) | plotly (Python) | High | plot_ly() vs px.scatter(); similar output |
| base R stats + lmtest + sandwich | statsmodels | Medium | Single formula syntax vs three Python dialects |
| plm + estimatr | linearmodels | Medium | pdata.frame vs pandas MultiIndex for panel structure |
| lme4 | statsmodels MixedLM | Medium | (1 | group) in formula vs separate groups=/re_formula= arguments |
| tidymodels / caret | scikit-learn | Medium | Declarative recipe pipeline vs imperative fit/predict |
| sf + terra | geopandas | Medium | st_*() functions vs GeoDataFrame methods; different CRS handling |
| survey (Lumley) | svy | Medium | Full GLM family coverage vs limited (gaussian/binomial/Poisson/gamma) |
| Quarto / RMarkdown | marimo | Medium | Knit-based linear execution vs reactive cells |
Fidelity key: High = near-direct translation, same mental model. Medium = same capability, different API patterns. Low = fundamentally different paradigm requiring conceptual remapping.
Translations in this skill reference specific library versions. R versions reference CRAN releases as of March 2026 (R 4.5.3). Python versions are pinned in DAAF's Docker environment (Python 3.12). When syntax or behavior has changed between versions, the reference files note the change.
| R Package | R Version (CRAN) | Python Equivalent | DAAF Version |
|---|---|---|---|
| dplyr + tidyr + data.table | dplyr 1.2.0, tidyr 1.3.2, data.table 1.18.2 | polars | 1.39.3 |
| fixest | 0.14.0 | pyfixest | 0.60.0 |
| ggplot2 | 4.0.2 | plotnine | 0.15.3 |
| plotly (R) | 4.12.0 | plotly | 6.5.2 |
| base R stats + lmtest + sandwich | lmtest 0.9-40, sandwich 3.1-1 | statsmodels | 0.14.6 |
| plm + estimatr | plm 2.6-7, estimatr 1.0.6 | linearmodels | 7.0 |
| lme4 | 2.0-1 | statsmodels MixedLM | 0.14.6 |
| tidymodels / caret | tidymodels 1.4.1, caret 7.0-1 | scikit-learn | 1.8.0 |
| sf + terra | sf 1.1-0, terra 1.9-11 | geopandas | 1.1.3 |
| survey | survey 4.5 | svy | 0.19.0 |
| marginaleffects (R) | 0.32.0 | marginaleffects | 0.5.0 |
| rdrobust (R) | 3.0.0 | rdrobust | 1.3.0 |
| Quarto / RMarkdown | Quarto 1.7.29 | marimo | 0.19.11 |
Pinning note: linearmodels, marginaleffects, and rdrobust are version-pinned in
DAAF's Dockerfile (linearmodels==7.0, marginaleffects==0.5.0, rdrobust==1.3.0)
and pre-installed alongside the rest of the Python stack. Translations reference their
documented APIs as of March 2026.
These are the friction points Python users encounter most frequently when reading or writing DAAF R code. Each is covered in depth in the referenced file.
| # | Friction Point | Python Way | R Way | Reference |
|---|---|---|---|---|
| 1 | Pipe operator | df.filter(...).with_columns(...) | `df | > filter(...) |
| 2 | Unquoted column names | pl.col("x") string references | x bare name in dplyr verbs | paradigm-differences.md |
| 3 | Missing values | None, NaN, and null (context-dependent) | Single unified NA type | paradigm-differences.md |
| 4 | Formula interface | Three incompatible Python dialects | One universal ~ syntax everywhere | regression-modeling.md |
| 5 | Assignment operator | = for assignment | <- for assignment (= also works but unconventional) | gotchas.md |
| 6 | Package loading | import pkg as alias (explicit namespace) | library(pkg) exports all names | paradigm-differences.md |
| 7 | Factor / categorical | pl.Categorical (storage only) | factor() with ordered levels, auto-dummies in models | paradigm-differences.md |
| 8 | 0-indexed vs 1-indexed | x[0] is first element | x[1] is first element | gotchas.md |
| 9 | Boolean values | True / False | TRUE / FALSE | gotchas.md |
| 10 | Data frame boundary | Must call .to_pandas() for modeling | Same tibble flows everywhere: wrangle, model, plot | paradigm-differences.md |
This section defines when and how code-producing agents add inline Python-equivalent comments to DAAF R scripts.
Annotations are added only when the orchestrator explicitly passes a Python-background directive to the agent. This is not a default behavior.
Trigger conditions (orchestrator activates this when any apply):
How the orchestrator passes the directive: The orchestrator adds the following to the agent prompt:
"User has Python background. Load python-r-translation skill. Add inline Python-equivalent comments for non-trivial data operations."
# Python: df.filter(pl.col("year") == 2020)
filtered <- df |> filter(year == 2020)
# Python: df.with_columns((pl.col("count") / pl.col("count").sum()).alias("pct"))
result <- df |>
mutate(pct = count / sum(count))
# Python: pf.feols("y ~ x1 + x2 | state + year", data=pdf, vcov={"CRV1": "state"})
fit <- feols(y ~ x1 + x2 | state + year, data = df, vcov = ~state)
library() calls, cat()/stopifnot() validation lines, file I/O boilerplate (read_parquet, write_parquet), config sections, section separator comments# Python: comment per logical operation, placed on the line immediately above the R code# INTENT:, # REASONING:, # ASSUMES:), not a replacement| Skill | Relationship |
|---|---|
tidyverse | R-side data wrangling -- detailed API reference for the polars equivalent |
fixest | R-side fixed effects regression -- detailed API for the pyfixest equivalent |
ggplot2 | R-side static visualization -- detailed API for the plotnine equivalent |
plotly-r | R-side interactive visualization -- detailed API for plotly Python equivalent |
r-stats | R-side general modeling -- covers base R stats, lmtest, sandwich equivalents |
plm | R-side panel/IV models -- covers linearmodels equivalents |
survey-r | R-side survey analysis -- covers svy (Python) equivalents |
sf-terra | R-side spatial data -- covers geopandas equivalents |
tidymodels | R-side ML -- covers scikit-learn equivalents |
quarto | R-side notebooks -- covers marimo workflow equivalents |
r-python-translation | Parallel skill for R-background users reading Python code -- same domain, reverse direction |
stata-python-translation | Parallel skill for Stata-background users -- shares the same Python target stack |
Note: Individual tool skills contain library-specific usage guidance (syntax, gotchas, performance). This skill provides the Python-to-R conceptual bridge -- use both together when a Python-background user is working with a specific R library.
ML interpretation/fairness asymmetry (honest signal): Python's ML interpretation and fairness ecosystem is genuinely deeper (SHAP, fairlearn, and related tooling). The R-side equivalents (iml, DALEX, kernelshap, fairmodels) are installed and covered by the tidymodels skill's interpretation.md and fairness.md, so real R workflows exist for these tasks -- but for ML-heavy interpretation or fairness translation questions the Python direction carries more depth, and translating to R may surface a residual ecosystem gap rather than a one-to-one mapping.
| Topic | Reference File |
|---|---|
| Pipe operator (` | >`) and method chaining |
| Unquoted column names (non-standard evaluation) | ./references/paradigm-differences.md |
| Missing value semantics (NA vs None/NaN/null) | ./references/paradigm-differences.md |
| Type system differences | ./references/paradigm-differences.md |
| Package/namespace model (library vs import) | ./references/paradigm-differences.md |
| 1-indexing vs 0-indexing | ./references/paradigm-differences.md |
| Data frame philosophy (tibble everywhere vs polars-pandas boundary) | ./references/paradigm-differences.md |
| Copy-on-modify vs reference semantics | ./references/paradigm-differences.md |
| dplyr verb mapping (filter, select, mutate, arrange) | ./references/dplyr-polars.md |
| summarise / group_by equivalents | ./references/dplyr-polars.md |
| tidyr verbs (pivot_longer, pivot_wider, separate, unite) | ./references/dplyr-polars.md |
| Join operations (left_join, inner_join, anti_join) | ./references/dplyr-polars.md |
| across() / where() equivalents | ./references/dplyr-polars.md |
| case_when equivalent | ./references/dplyr-polars.md |
| Window functions (over vs group_by + mutate) | ./references/dplyr-polars.md |
| Pipe chaining comparison | ./references/dplyr-polars.md |
| Lazy evaluation (scan_parquet vs arrow) | ./references/dplyr-polars.md |
| nest/unnest equivalents | ./references/dplyr-polars.md |
| readr I/O equivalents | ./references/dplyr-polars.md |
| String operations (stringr vs polars .str) | ./references/strings-dates-factors.md |
| Date operations (lubridate vs polars .dt) | ./references/strings-dates-factors.md |
| Factor/categorical operations (forcats vs polars Categorical) | ./references/strings-dates-factors.md |
| data.table vs polars | ./references/strings-dates-factors.md |
| fixest formula syntax in pyfixest | ./references/regression-modeling.md |
| lm() / glm() in statsmodels | ./references/regression-modeling.md |
| Formula interface comparison (R universal vs three Python dialects) | ./references/regression-modeling.md |
| Standard error specification differences | ./references/regression-modeling.md |
| plm panel models in linearmodels | ./references/regression-modeling.md |
| lme4 mixed effects equivalents | ./references/regression-modeling.md |
| marginaleffects (R to Python) | ./references/regression-modeling.md |
| Model summary / tidy output | ./references/regression-modeling.md |
| Sandwich / robust SE equivalents | ./references/regression-modeling.md |
| ggplot2 layer mapping to plotnine | ./references/visualization.md |
| aes() bare names vs string quoting | ./references/visualization.md |
| Theme customization | ./references/visualization.md |
| Scale functions | ./references/visualization.md |
| Faceting (facet_wrap, facet_grid) | ./references/visualization.md |
| plotly R vs plotly Python | ./references/visualization.md |
| ggsave equivalent | ./references/visualization.md |
| Coefficient and effect plots | ./references/visualization.md |
| Difference-in-differences (sunab, did2s) | ./references/causal-inference.md |
| Regression discontinuity (rdrobust) | ./references/causal-inference.md |
| Instrumental variables (feols IV vs pyfixest/linearmodels) | ./references/causal-inference.md |
| Event study designs | ./references/causal-inference.md |
| Synthetic control | ./references/causal-inference.md |
| Matching / propensity scores | ./references/causal-inference.md |
| Staggered DiD estimators | ./references/causal-inference.md |
| survey package to svy | ./references/survey-spatial-ml.md |
| svydesign / svymean / svyglm equivalents | ./references/survey-spatial-ml.md |
| sf spatial operations to geopandas | ./references/survey-spatial-ml.md |
| CRS / projection handling | ./references/survey-spatial-ml.md |
| Spatial joins (st_join vs sjoin) | ./references/survey-spatial-ml.md |
| tidymodels pipeline to scikit-learn | ./references/survey-spatial-ml.md |
| BRR / jackknife replication weights | ./references/survey-spatial-ml.md |
| Raster data handling (terra vs rasterio) | ./references/survey-spatial-ml.md |
| Feature engineering (recipes vs sklearn Pipeline) | ./references/survey-spatial-ml.md |
| Cross-validation (rsample vs sklearn) | ./references/survey-spatial-ml.md |
| RStudio vs DAAF workflow | ./references/workflow-environment.md |
| Quarto / RMarkdown vs marimo | ./references/workflow-environment.md |
| File-first execution model | ./references/workflow-environment.md |
| Package management (renv vs Docker) | ./references/workflow-environment.md |
| Project structure conventions | ./references/workflow-environment.md |
| Curated Python-to-R migration guides | ./references/external-resources.md |
| Package documentation links | ./references/external-resources.md |
| Tutorial recommendations with provenance | ./references/external-resources.md |
| Assignment operator (<- vs =) | ./references/gotchas.md |
| TRUE/FALSE vs True/False | ./references/gotchas.md |
| 1-indexed vector access | ./references/gotchas.md |
| Factor vs Categorical pitfalls | ./references/gotchas.md |
| library() vs import habits | ./references/gotchas.md |
| NA propagation surprises | ./references/gotchas.md |
| Vectorized operations expectations | ./references/gotchas.md |
| Copying semantics (R copy-on-modify vs Python references) | ./references/gotchas.md |
| Logical operators (& / | vs and / or) |
| String interpolation (glue vs f-strings) | ./references/gotchas.md |
| apply family vs map/list comprehension | ./references/gotchas.md |
| Coordinate systems (coord_flip, coord_polar) | ./references/visualization.md |
| Stat layers (stat_smooth, stat_summary) | ./references/visualization.md |
| Color palette mapping (viridis, brewer) | ./references/visualization.md |
| Multi-panel layouts (patchwork vs subplot) | ./references/visualization.md |
| Parallel trends testing | ./references/causal-inference.md |
| Environment/workspace differences (.RData vs nothing) | ./references/workflow-environment.md |
| Debugging workflow (browser() vs breakpoint()) | ./references/workflow-environment.md |
| R help system (?func) vs Python help(func) | ./references/workflow-environment.md |
| Cheat sheet and quick-reference links | ./references/external-resources.md |
| Community resources (Stack Overflow tags, forums) | ./references/external-resources.md |
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Guide for creating DAAF agent definition files. Covers 12-section template, hook registration, skills-in-frontmatter, integration checklist. Use when adding or revising agents. For SKILL.md files, use skill-authoring instead.
中文简介正在准备中。当前显示原文说明。
Researcher-facing analytic triangulation ("creative verification") for stress-testing provisional findings and designing pre-specified challenges before an analysis runs. Turns a researcher's concern or focal claim into competing explanations, bounded discriminating tests, audited diagnostic artifacts, and evidence-calibrated interpretations in a hypothesis/evidence ledger — behavioral, output-level verification replacing line-by-line code review. Covers 12 challenge families organized by Shadish-Cook-Campbell validity type, named sensitivity statistics, pre-committed interpretation rules, anti-fishing guardrails, and interactive diagnostic-artifact QA. Use in Ad Hoc Collaboration to verify, challenge, or stress-test a result, or to design discriminating tests before an analysis runs. Not code-change verification (verify skill / code review) and not final adjudication or re-execution (data-verifier, Reproducibility Verification) — prospective, hypothesis-driven challenge design of analytic claims.
中文简介正在准备中。当前显示原文说明。
In-situ smoke testing that verifies a LIVE DAAF deployment functions end-to-end in whatever provider route it is configured for. Auto-detects the active install route (anthropic-subscription, openrouter, chatgpt-subscription shim, openai-api shim) and runs tiered probes: Tier 0 free preflight (route/env coherence, hooks, statuslines, shim health); Tier 1 one live round-trip (~cents); Tier 2 a six-probe functional battery (dispatch, coding, web, skill loading, isolation-strip, nested-dispatch deny); Tier D a zero-cost deterministic battery (bats, Pester, lint, safety-hook tests). Use after install, after a rebuild or update, after any provider/config change (new API key, model remap, shim change), for pre-release validation, or when asked "is my install working" or to "smoke test the deployment/config." Requires the DAAF_DEV=1 dev image; a contributor tool, not end-user-facing. NOT DAAFBench (model behavioral-adherence evaluation under benchmarks/) and NOT scripts/smoke_tests/ (R/Python library-package smoke tests).
中文简介正在准备中。当前显示原文说明。
Operational framework for the DAAF orchestrator. Defines engagement modes, confirmation protocol, subagent dispatch, context budget, and reference-loading. Loaded exclusively by the orchestrator — not for subagents or user questions.
中文简介正在准备中。当前显示原文说明。
Data science methodology and method-selection routing for quantitative research. Covers EDA, data validation, descriptive analysis, causal inference (IV, DiD, RD, synthetic control), clustering/PCA/UMAP, supervised ML, geospatial analysis, network analysis, and visualization design. Contains the canonical method-to-library routing tree, routed by execution language — Python: statsmodels (OLS/GLM/time series), pyfixest (FE/DiD), linearmodels (RE/GMM/SUR), svy (complex surveys), scikit-learn (clustering/prediction ML), geopandas (spatial), igraph (network analysis); R: r-stats (OLS/GLM/time series), fixest (FE/DiD), plm (panel/RE/IV), survey-r (complex surveys), tidymodels (ML), sf-terra (spatial), igraph-r (network analysis). Load the routed tool-specific skill before giving tool-specific advice or writing code — library skills encode environment constraints and curated caveats absent from general knowledge.
中文简介正在准备中。当前显示原文说明。
Interpretation guidance for Urban Institute Education Data Portal datasets. The Portal is a curation layer over federal data: lowercase variable names, integer-encoded categoricals, standardized missing codes (-1 missing, -2 not applicable, -3 suppressed). Covers year definitions, grade encoding (grade=-1 is Pre-K, not missing), suppression rates, ODC-By licensing, and cross-source join identifiers. Load before analyzing any Portal data. Routes to source-specific deep-dive skills for individual datasets.
中文简介正在准备中。当前显示原文说明。