library(devtools)
#> Loading required package: usethis
library(roxygen2)
library(testthat)
#>
#> Attaching package: 'testthat'
#> The following object is masked from 'package:devtools':
#>
#> test_file
#> The following object is masked from 'package:dplyr':
#>
#> matches
#> The following object is masked from 'package:purrr':
#>
#> is_null
#> The following objects are masked from 'package:readr':
#>
#> edition_get, local_edition
#> The following object is masked from 'package:tidyr':
#>
#> matches
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────
#> setting value
#> version R version 4.4.0 (2024-04-24)
#> os Ubuntu 22.04.4 LTS
#> system x86_64, linux-gnu
#> ui X11
#> language (EN)
#> collate C.UTF-8
#> ctype C.UTF-8
#> tz UTC
#> date 2024-08-18
#> pandoc 3.1.11 @ /opt/hostedtoolcache/pandoc/3.1.11/x64/ (via rmarkdown)
#>
#> ─ Packages ───────────────────────────────────────────────────────
#> ! package * version date (UTC) lib source
#> P bit 4.0.5 2022-11-15 [?] RSPM (R 4.4.0)
#> P bit64 4.0.5 2020-08-30 [?] RSPM (R 4.4.0)
#> P brio 1.1.5 2024-04-24 [?] RSPM (R 4.4.0)
#> P cachem 1.1.0 2024-05-16 [?] RSPM (R 4.4.0)
#> P cli 3.6.2 2023-12-11 [?] RSPM (R 4.4.0)
#> P colorspace 2.1-0 2023-01-23 [?] RSPM (R 4.4.0)
#> P crayon 1.5.2 2022-09-29 [?] RSPM (R 4.4.0)
#> P devtools * 2.4.5 2022-10-11 [?] RSPM (R 4.4.0)
#> P digest 0.6.35 2024-03-11 [?] RSPM (R 4.4.0)
#> P dplyr * 1.1.4 2023-11-17 [?] RSPM (R 4.4.0)
#> P ellipsis 0.3.2 2021-04-29 [?] RSPM (R 4.4.0)
#> P evaluate 0.23 2023-11-01 [?] RSPM (R 4.4.0)
#> P fansi 1.0.6 2023-12-08 [?] RSPM (R 4.4.0)
#> P fastmap 1.2.0 2024-05-15 [?] RSPM (R 4.4.0)
#> P forcats * 1.0.0 2023-01-29 [?] RSPM (R 4.4.0)
#> P fs 1.6.4 2024-04-25 [?] RSPM (R 4.4.0)
#> P generics 0.1.3 2022-07-05 [?] RSPM (R 4.4.0)
#> P ggplot2 * 3.5.1 2024-04-23 [?] RSPM (R 4.4.0)
#> P glue 1.7.0 2024-01-09 [?] RSPM (R 4.4.0)
#> P gtable 0.3.5 2024-04-22 [?] RSPM (R 4.4.0)
#> P hms 1.1.3 2023-03-21 [?] RSPM (R 4.4.0)
#> P htmltools 0.5.8.1 2024-04-04 [?] RSPM (R 4.4.0)
#> P htmlwidgets 1.6.4 2023-12-06 [?] RSPM (R 4.4.0)
#> P httpuv 1.6.15 2024-03-26 [?] RSPM (R 4.4.0)
#> P jsonlite 1.8.8 2023-12-04 [?] RSPM (R 4.4.0)
#> P knitr 1.47 2024-05-29 [?] RSPM (R 4.4.0)
#> P later 1.3.2 2023-12-06 [?] RSPM (R 4.4.0)
#> P lifecycle 1.0.4 2023-11-07 [?] RSPM (R 4.4.0)
#> P lubridate * 1.9.3 2023-09-27 [?] RSPM (R 4.4.0)
#> P magrittr 2.0.3 2022-03-30 [?] RSPM (R 4.4.0)
#> P memoise 2.0.1 2021-11-26 [?] RSPM (R 4.4.0)
#> P mime 0.12 2021-09-28 [?] RSPM (R 4.4.0)
#> P miniUI 0.1.1.1 2018-05-18 [?] RSPM (R 4.4.0)
#> P munsell 0.5.1 2024-04-01 [?] RSPM (R 4.4.0)
#> P pillar 1.9.0 2023-03-22 [?] RSPM (R 4.4.0)
#> P pkgbuild 1.4.4 2024-03-17 [?] RSPM (R 4.4.0)
#> P pkgconfig 2.0.3 2019-09-22 [?] RSPM (R 4.4.0)
#> P pkgload 1.3.4 2024-01-16 [?] RSPM (R 4.4.0)
#> P profvis 0.3.8 2023-05-02 [?] RSPM (R 4.4.0)
#> P promises 1.3.0 2024-04-05 [?] RSPM (R 4.4.0)
#> P purrr * 1.0.2 2023-08-10 [?] RSPM (R 4.4.0)
#> P R6 2.5.1 2021-08-19 [?] RSPM (R 4.4.0)
#> P Rcpp 1.0.12 2024-01-09 [?] RSPM (R 4.4.0)
#> P readr * 2.1.5 2024-01-10 [?] RSPM (R 4.4.0)
#> P remotes 2.5.0 2024-03-17 [?] RSPM (R 4.4.0)
#> renv 1.0.7 2024-04-11 [1] RSPM (R 4.4.0)
#> P rlang 1.1.4 2024-06-04 [?] RSPM (R 4.4.0)
#> P rmarkdown 2.26 2024-03-05 [?] RSPM (R 4.4.0)
#> P roxygen2 * 7.3.1 2024-01-22 [?] RSPM (R 4.4.0)
#> P scales 1.3.0 2023-11-28 [?] RSPM (R 4.4.0)
#> P sessioninfo 1.2.2 2021-12-06 [?] RSPM (R 4.4.0)
#> P shiny 1.8.1.1 2024-04-02 [?] RSPM (R 4.4.0)
#> P stringi 1.8.4 2024-05-06 [?] RSPM (R 4.4.0)
#> P stringr * 1.5.1 2023-11-14 [?] RSPM (R 4.4.0)
#> P testthat * 3.2.1.1 2024-04-14 [?] RSPM (R 4.4.0)
#> P tibble * 3.2.1 2023-03-20 [?] RSPM (R 4.4.0)
#> P tidyr * 1.3.1 2024-01-24 [?] RSPM (R 4.4.0)
#> P tidyselect 1.2.1 2024-03-11 [?] RSPM (R 4.4.0)
#> P tidyverse * 2.0.0 2023-02-22 [?] RSPM (R 4.4.0)
#> P timechange 0.3.0 2024-01-18 [?] RSPM (R 4.4.0)
#> P tzdb 0.4.0 2023-05-12 [?] RSPM (R 4.4.0)
#> P urlchecker 1.0.1 2021-11-30 [?] RSPM (R 4.4.0)
#> P usethis * 2.2.3 2024-02-19 [?] RSPM (R 4.4.0)
#> P utf8 1.2.4 2023-10-22 [?] RSPM (R 4.4.0)
#> P vctrs 0.6.5 2023-12-01 [?] RSPM (R 4.4.0)
#> P vroom 1.6.5 2023-12-05 [?] RSPM (R 4.4.0)
#> P withr 3.0.0 2024-01-16 [?] RSPM (R 4.4.0)
#> P xfun 0.44 2024-05-15 [?] RSPM (R 4.4.0)
#> P xml2 1.3.6 2023-12-04 [?] RSPM (R 4.4.0)
#> P xtable 1.8-4 2019-04-21 [?] RSPM (R 4.4.0)
#>
#> [1] /home/runner/work/r-pkgses/r-pkgses/renv/library/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu
#> [2] /home/runner/.cache/R/renv/sandbox/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu/3df92652
#>
#> P ── Loaded and on-disk path mismatch.
#>
#> ──────────────────────────────────────────────────────────────────
Prefacio
¡Bienvenido a la segunda edición de R Packages! Si está familiarizado con la primera edición, este prefacio describe los cambios más importantes para que pueda centrar su lectura en las nuevas áreas.
Hay varios objetivos principales para esta edición:
Actualizar para reflejar los cambios en el paquete devtools, específicamente, su “desacoplamiento consciente” en un conjunto de paquetes más pequeños y más enfocados.
Ampliar la cobertura del flujo de trabajo y el proceso, junto con la presentación de todas las partes móviles importantes que componen un paquete R.
Cubrir temas completamente nuevos, como sitios web de paquetes y acciones de GitHub.
Todo el contenido ha sido completamente revisado y actualizado. Muchos capítulos son nuevos o están reorganizados y se han eliminado algunos:
El nuevo 1 Todo el juego, “Todo el juego”, muestra una vista previa de todo el proceso de desarrollo del paquete.
El nuevo 2 Configuración del sistema, “Configuración del sistema”, se eliminó de la Introducción anterior y obtuvo más detalles.
El capítulo anteriormente conocido como “Estructura del paquete” se ha ampliado y dividido en dos capítulos, uno que cubre la estructura y el estado del paquete (3 Estructura y estado del paquete) y otro sobre flujos de trabajo y herramientas (4 Flujos de trabajo de desarrollo fundamentales).
El nuevo 5 El paquete en el interior de su código, “El paquete interno”, demuestra cómo extraer lógica reutilizable de scripts de análisis de datos y colocarla en un paquete.
Las secciones “Organización de funciones” y “Estilo de código”, de 6 Código R, “Código R”, se han eliminado en favor de una guía de estilo en línea, https://style.tidyverse.org/. La guía de estilo está emparejada con el nuevo paquete de estilo (Müller y Walthert 2018) que puede aplicar automáticamente muchas de las reglas.
La cobertura de las pruebas se ha ampliado en tres capítulos: 13 Conceptos básicos de pruebas para los conceptos básicos de las pruebas, 14 Diseñar su conjunto de pruebas para el diseño del conjunto de pruebas y 15 Técnicas de prueba avanzadas para varios temas avanzados.
El material sobre el archivo
NAMESPACE
y las relaciones de dependencia se ha reorganizado en dos capítulos: 10 Dependencias: mentalidad y antecedentes proporciona un contexto técnico para pensar en las dependencias y 11 Dependencias: en la práctica brinda instrucciones prácticas para usar diferentes tipos de dependencias en diferentes entornos.La nueva 12 Licencias, “Licencias”, amplía el contenido anterior sobre licencias en su propio capítulo.
Se ha eliminado el capítulo sobre C/C++. No tenía suficiente información para ser útil y, desde la primera edición del libro, han surgido otros recursos que son mejores recursos de aprendizaje.
Se ha eliminado el capítulo “Otros componentes”.
El capítulo sobre Git/GitHub se ha replanteado en torno al tema más general de las prácticas de desarrollo de software (20 Prácticas de desarrollo de software). Esto ya no incluye instrucciones paso a paso para tareas básicas. El uso de Git/GitHub se ha disparado desde la primera edición, acompañado de una explosión de recursos de aprendizaje, tanto generales como específicos de R (por ejemplo, el sitio web Happy Git y GitHub para el usuaRio). Git/GitHub todavía ocupa un lugar destacado en todo el libro, especialmente en 20 Prácticas de desarrollo de software.
El muy breve capítulo
inst
se ha combinado en 8 Otros componentes, con todos los demás directorios que pueden ser importantes en contextos específicos, pero que no son de misión crítica para todos los paquetes.
Agradecimientos
Desde que se publicó la primera edición de Paquetes de R, los paquetes que respaldan los flujos de trabajo descritos aquí han experimentado un amplio desarrollo. El trío original de devtools, roxygen2 y testthat se ha expandido para incluir los paquetes creados por el “desacoplamiento consciente” de devtools, como se describe en 2.2 devtools, usethis, y usted. La mayoría de estos paquetes se originan en Hadley Wickham (HW), debido a sus raíces devtools. Hay muchos otros contribuyentes importantes, muchos de los cuales ahora sirven como mantenedores:
- devtools: HW, Winston Chang, Jim Hester (mantenedor, >= v1.13.5), Jennifer Bryan (mantenedor >= v2.4.3)
- usethis: HW, Jennifer Bryan (mantenedor >= v1.5.0), Malcolm Barrett
- roxygen2: HW (mantenedor), Peter Danenburg, Manuel Eugster
- testthat: HW (mantenedor)
- desc: Gábor Csárdi (mantenedor), Kirill Müller, Jim Hester
- pkgbuild: HW, Jim Hester, Gábor Csárdi (mantenedor >= v1.2.1)
- pkgload: HW, Jim Hester, Winston Chang, Lionel Henry (mantenedor >= v1.2.4)
- rcmdcheck: Gábor Csárdi (mantenedor)
- remotes: HW, Jim Hester, Gábor Csárdi (mantenedor), Winston Chang, Martin Morgan, Dan Tenenbaum
- revdepcheck: HW, Gábor Csárdi (mantenedor)
- sessioninfo: HW, Gábor Csárdi (mantenedor), Winston Chang, Robert Flight, Kirill Müller, Jim Hester
Este libro fue escrito y revisado abiertamente y es verdaderamente un esfuerzo comunitario: muchas personas leen borradores, corrigen errores tipográficos, sugieren mejoras y contribuyen con contenido. Sin esos colaboradores, el libro no sería tan bueno como es y estamos profundamente agradecidos por su ayuda. Estamos en deuda con nuestros colegas de Posit, especialmente con el equipo de tidyverse, por estar siempre dispuestos a discutir prácticas de desarrollo de paquetes. El libro ha mejorado enormemente gracias a las sugerencias de nuestro fantástico equipo de revisores técnicos: Malcolm Barrett, Laura DeCicco, Zhian Kamvar, Tom Mock y Maëlle Salmon.
#> ── Attaching core tidyverse packages ──────────── tidyverse 2.0.0 ──
#> ✔ dplyr 1.1.4 ✔ readr 2.1.5
#> ✔ forcats 1.0.0 ✔ stringr 1.5.1
#> ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
#> ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
#> ✔ purrr 1.0.2
#> ── Conflicts ────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag() masks stats::lag()
#> ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
#> Rows: 410 Columns: 3
#> ── Column specification ────────────────────────────────────────────
#> Delimiter: ","
#> chr (3): user, name, maybe_name
#>
#> ℹ Use `spec()` to retrieve the full column specification for this data.
#> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Gracias a todos los contribuyentes de la primera y segunda edición. (en orden alfabético por nombre de usuario de GitHub):
@aaelony, @aaronwolen (Aaron Wolen), @ablejec (Andrej Blejec), @adamcduncan (Adam Duncan), @adessy, @adrtod (Adrien Todeschini), @aghaynes (Alan Haynes), @agrueneberg (Alexander Grueneberg), @alejandrohagan (Alejandro Hagan), @alesantuz (Ale Santuz), @alexandrehsd (Alexandre Henrique), @alexholcombe (Alex O. Holcombe), @alexpghayes (alex hayes), @alforj (Justin Alford), @almartin82 (Andrew Martin), @aluxh (Alex Ho), @AmelZulji, @andreaphsz (Andrea Cantieni), @andrewdolman (Andrew Dolman), @andrewpbray (Andrew Bray), @AndrewsOR (John Andrews), @andycraig (Andrew Craig), @angela-li (Angela Li), @anjalisilva (Anjali Silva), @apomatix (Brad Friedman), @apreshill (Alison Presmanes Hill), @arashHaratian (Arash), @arilamstein (Ari Lamstein), @arneschillert (Arne Schillert), @arni-magnusson (Arni Magnusson), @asadow (Adam Sadowski), @ateucher (Andy Teucher), @avisser (Andy Visser), @ayormark (Adam Yormark), @azzaea (Azza Ahmed), @batpigandme (Mara Averick), @bclipp (Brian L), @beevabeeva, @behrman (Bill Behrman), @benmarwick (Ben Marwick), @BernhardKonrad (Bernhard Konrad), @bgreenwell (Brandon Greenwell), @Bisaloo (Hugo Gruson), @bklamer (Brett Klamer), @bm5tev3, @bms63 (Ben Straub), @bpbond (Ben Bond-Lamberty), @bquast (Bastiaan Quast), @Br-Johnson (Brett Johnson), @brews (Brewster Malevich), @brianrice2 (Brian Rice), @brry (Berry Boessenkool), @btruel, @calligross (Calli), @carldotac (Carl Lieberman), @carloscinelli (Carlos Cinelli), @CDCookJr, @cderv (Christophe Dervieux), @chambm (Matt Chambers), @charliejhadley (Charlie Joey Hadley), @chezou (Aki Ariga), @chsafouane (Safouane Chergui), @clente (Caio Lente), @cmarmstrong, @cooknl (CAPN), @CorradoLanera (Corrado Lanera), @craigcitro (Craig Citro), @crtahlin (Crt Ahlin), @daattali (Dean Attali), @danhalligan (Dan Halligan), @daroczig (Gergely Daróczi), @datarttu (Arttu Kosonen), @davidkane9 (David Kane), @DavisVaughan (Davis Vaughan), @deanbodenham, @dfalbel (Daniel Falbel), @dgrtwo (David Robinson), @dholstius (David Holstius), @DickStartz, @dkgaraujo (Douglas K. G. Araujo), @dlukes (David Lukes), @DOH-PXC5303 (Philip Crain), @dongzhuoer (Zhuoer Dong), @DougManuel (Doug Manuel), @dpprdan (Daniel Possenriede), @dracodoc (dracodoc), @drag05 (Dragos Bandur), @drvinceknight (Vince Knight), @dryzliang, @dyavorsky (Dan Yavorsky), @e-pet, @earino (E. Ariño de la Rubia), @echelleburns, @eeholmes (Eli Holmes), @eipi10 (Joel Schwartz), @ekbrown (Earl Brown), @EllaKaye (Ella Kaye), @EmilHvitfeldt (Emil Hvitfeldt), @eogoodwin, @erictleung (Eric Leung), @erikerhardt (Erik Erhardt), @espinielli (Enrico Spinielli), @ewan (Ewan Dunbar), @fbertran (Frederic Bertrand), @federicomarini (Federico Marini), @fenguoerbian (Chao Cheng), @fkohrt (Florian Kohrt), @florisvdh (Floris Vanderhaeghe), @floswald (Florian Oswald), @franrodalg (Francisco Rodríguez-Algarra), @franticspider (Simon Hickinbotham), @frycast (Daniel Vidali Fryer), @fsavje (Fredrik Sävje), @gajusmiknaitis, @gcpoole (Geoffrey Poole), @geanders (Brooke Anderson), @georoen (Jee Roen), @GerardTromp (Gerard Tromp), @GillesSanMartin (Gilles San Martin), @gmaubach (Georg Maubach), @gonzalezgouveia (Rafael Gonzalez Gouveia), @gregmacfarlane (Greg Macfarlane), @gregrs-uk (Greg), @grst (Gregor Sturm), @gsrohde (Scott Rohde), @guru809, @gustavdelius (Gustav W Delius), @haibin (Liu Haibin), @hanneoberman (Hanne Oberman), @harrismcgehee (Harris McGehee), @havenl (Haven Liu), @hcyvan (程一航), @hdraisma (Harmen), @hedderik (Hedderik van Rijn), @heists ((ꐦ°᷄д°)ა), @helske (Jouni Helske), @henningte (Henning Teickner), @HenrikBengtsson (Henrik Bengtsson), @heogden (Helen Ogden), @hfrick (Hannah Frick), @Holzhauer (Sascha Holzhauer), @howardbaek (Howard Baek), @howbuildingsfail (How Buildings Fail), @hq9000 (Sergey Grechin), @hrbrmstr (boB Rudis), @iangow (Ian Gow), @iargent, @idmn (Iaroslav Domin), @ijlyttle (Ian Lyttle), @imchoyoung (Choyoung Im), @InfiniteCuriosity (Russ Conte), @ionut-stefanb (Ionut Stefan-Birdea), @Ironholds (Os Keyes), @ismayc (Chester Ismay), @isomorphisms (i), @jackwasey (Jack Wasey), @jacobbien (Jacob Bien), @jadeynryan (Jadey Ryan), @jameelalsalam (Jameel Alsalam), @jameslairdsmith (James Laird-Smith), @janzzon (Stefan Jansson), @JayCeBB, @jcainey (Joe Cainey), @jdblischak (John Blischak), @jedwards24 (James Edwards), @jemus42 (Lukas Burk), @jenniferthompson (Jennifer Thompson), @jeremycg (Jeremy Gray), @jgarthur (Joey Arthur), @jimhester (Jim Hester), @jimr1603 (James Riley), @jjesusfilho (José de Jesus Filho), @jkeirstead (James Keirstead), @jmarca (James Marca), @jmarshallnz (Jonathan Marshall), @joethorley (Joe Thorley), @johnbaums (John), @jolars (Johan Larsson), @jonthegeek (Jon Harmon), @jowalski (John Kowalski), @jpinelo (Joao Pinelo Silva), @jrdnbradford (Jordan), @jthomasmock (Tom Mock), @julian-urbano (Julián Urbano), @jwpestrak, @jzadra (Jonathan Zadra), @jzhaoo (Joanna Zhao), @kaetschap (Sonja), @karthik (Karthik Ram), @KasperThystrup (Kasper Thystrup Karstensen), @KatherineCox, @katrinleinweber (Katrin Leinweber), @kbroman (Karl Broman), @kekecib (Ibrahim Kekec), @KellenBrosnahan, @kendonB (Kendon Bell), @kevinushey (Kevin Ushey), @kikapp (Kristopher Kapphahn), @KirkDSL, @KJByron (Karen J. Byron), @klmr (Konrad Rudolph), @KoderKow (Kyle Harris), @kokbent (Ben Toh), @kongdd (Dongdong Kong), @krlmlr (Kirill Müller), @kwenzig (Knut Wenzig), @kwstat (Kevin Wright), @kylelundstedt (Kyle G. Lundstedt), @lancelote (Pavel Karateev), @lbergelson (Louis Bergelson), @LechMadeyski (Lech Madeyski), @Lenostatos (Leon), @lindbrook, @lionel- (Lionel Henry), @LluisRamon (Lluís Ramon), @lorenzwalthert (Lorenz Walthert), @lwjohnst86 (Luke W Johnston), @maelle (Maëlle Salmon), @maiermarco, @maislind (David M), @majr-red (Matthew Roberts), @malcolmbarrett (Malcolm Barrett), @malexan (Alexander Matrunich), @manuelreif (Manuel Reif), @MarceloRTonon (Marcelo Tonon), @mariacuellar (Maria Cuellar), @markdly (Mark Dulhunty), @Marlin-Na (Marlin), @martin-mfg, @matanhakim (Matan Hakim), @matdoering, @matinang (Matina Angelopoulou), @mattflor (Matthias Flor), @maurolepore (Mauro Lepore), @maxheld83 (Max Held), @mayankvanani (Mayank Vanani), @mbjones (Matt Jones), @mccarthy-m-g (Michael McCarthy), @mdequeljoe (Matthew de Queljoe), @mdsumner (Michael Sumner), @michaelboerman (Michael Boerman), @MichaelChirico (Michael Chirico), @michaelmikebuckley (Michael Buckley), @michaelweylandt (Michael Weylandt), @miguelmorin, @MikeJohnPage, @mikelnrd (Michael Leonard), @mikelove (Mike Love), @mikemc (Michael McLaren), @MilesMcBain (Miles McBain), @mjkanji (Muhammad Jarir Kanji), @mkuehn10 (Michael Kuehn), @mllg (Michel Lang), @mohamed-180 (Mohamed El-Desokey), @moodymudskipper (Antoine Fabri), @Moohan (James McMahon), @MrAE (Jesse Leigh Patsolic), @mrcaseb, @ms609 (Martin R. Smith), @mskyttner (Markus Skyttner), @MWilson92 (Matthew Wilson), @myoung3, @nachti (Gerhard Nachtmann), @nanxstats (Nan Xiao), @nareal (Nelson Areal), @nattalides, @ncarchedi (Nick Carchedi), @ndphillips (Nathaniel Phillips), @nick-youngblut (Nick Youngblut), @njtierney (Nicholas Tierney), @nsheff (Nathan Sheffield), @osorensen (Øystein Sørensen), @PabRod (Pablo Rodríguez-Sánchez), @paternogbc (Gustavo Brant Paterno), @paulrougieux (Paul Rougieux), @pdwaggoner (Philip Waggoner), @pearsonca (Carl A. B. Pearson), @perryjer1 (Jeremiah), @petermeissner (Peter Meissner), @petersonR (Ryan Peterson), @petzi53 (Peter Baumgartner), @PhilipPallmann (Philip Pallmann), @philliplab (Phillip Labuschagne), @phonixor (Gerrit-Jan Schutten), @pkimes (Patrick Kimes), @pnovoa (Pavel Novoa), @ppanko (Pavel Panko), @pritesh-shrivastava (Pritesh Shrivastava), @PrzeChoj (PrzeChoj), @PursuitOfDataScience (Y. Yu), @pwaeckerle, @raerickson (Richard Erickson), @ramiromagno (Ramiro Magno), @ras44, @rbirkelbach (Robert Birkelbach), @rcorty (Robert W. Corty), @rdiaz02 (Ramon Diaz-Uriarte), @realAkhmed (Akhmed Umyarov), @reikookamoto (Reiko Okamoto), @renkun-ken (Kun Ren), @retowyss (Reto Wyss), @revodavid (David Smith), @rgknight (Ryan Knight), @rhgof (Richard), @rmar073, @rmflight (Robert M Flight), @rmsharp (R. Mark Sharp), @rnuske (Robert Nuske), @robertzk (Robert Krzyzanowski), @Robinlovelace (Robin Lovelace), @robiRagan (Robi Ragan), @Robsteranium (Robin Gower), @romanzenka (Roman Zenka), @royfrancis (Roy Francis), @rpruim (Randall Pruim), @rrunner, @rsangole (Rahul), @ryanatanner (Ryan), @salim-b (Salim B), @SamEdwardes (Sam Edwardes), @SangdonLim (Sangdon Lim), @sathishsrinivasank (Sathish), @sbgraves237, @schifferl (Lucas Schiffer), @scw (Shaun Walbridge), @sdarodrigues (Sabrina Rodrigues), @sebffischer (Sebastian Fischer), @serghiou (Stylianos Serghiou), @setoyama60jp, @sfirke (Sam Firke), @shannonpileggi (Shannon Pileggi), @Shelmith-Kariuki (Shel), @SheridanLGrant (Sheridan Grant), @shntnu (Shantanu Singh), @sibusiso16 (S’busiso Mkhondwane), @simdadim (Simen Buodd), @SimonPBiggs (SPB), @simonthelwall (Simon Thelwall), @SimonYansenZhao (Simon He Zhao), @singmann (Henrik Singmann), @Skenvy (Nathan Levett), @Smudgerville (Richard M. Smith), @sn248 (Satyaprakash Nayak), @sowla (Praer (Suthira) Owlarn), @srushe (Stephen Rushe), @statnmap (Sébastien Rochette), @steenharsted (Steen Harsted), @stefaneng (Stefan Eng), @stefanherzog (Stefan Herzog), @stephen-frank (Stephen Frank), @stephenll (Stephen Lienhard), @stephenturner (Stephen Turner), @stevenprimeaux (Steven Primeaux), @stevensbr, @stewid (Stefan Widgren), @sunbeomk (Sunbeom Kwon), @superdesolator (Po Su), @syclik (Daniel Lee), @symbolrush (Adrian Stämpfli-Schmid), @taekyunk (Taekyun Kim), @talgalili (Tal Galili), @tanho63 (Tan Ho), @tbrugz (Telmo Brugnara), @thisisnic (Nic Crane), @TimHesterberg (Tim Hesterberg), @titaniumtroop (Nathan), @tjebo, @tklebel (Thomas Klebel), @tmstauss (Tanner Stauss), @tonybreyal (Tony Breyal), @tonyfischetti (Tony Fischetti), @TonyLadson (Tony Ladson), @trickytank (Rick Tankard), @TroyVan, @uribo (Shinya Uryu), @urmils, @valeonte, @vgonzenbach (Virgilio Gonzenbach), @vladpetyuk (Vlad Petyuk), @vnijs (Vincent Nijs), @vspinu (Vitalie Spinu), @wcarlsen (Willi Carlsen), @wch (Winston Chang), @wenjie2wang (Wenjie Wang), @werkstattcodes, @wiaidp, @wibeasley (Will Beasley), @wilkinson (Sean Wilkinson), @williamlief (Lief Esbenshade), @winterschlaefer (Christof Winter), @wlamnz (William Lam), @wrathematics (Drew Schmidt), @XiangyunHuang (Xiangyun Huang), @xiaochi-liu (Xiaochi), @XiaoqiLu (Xiaoqi Lu), @xiaosongz (Xiaosong Zhang), @yihui (Yihui Xie), @ynsec37, @yonicd, @ysdgroot, @yui-knk (Yuichiro Kaneko), @Zedseayou (Calum You), @zeehio (Sergio Oller), @zekiakyol (Zeki Akyol), @zenggyu (Guangyu Zeng), @zhaoy, @zhilongjia (Zhilong), @zhixunwang, @zkamvar (Zhian N. Kamvar), @zouter (Wouter Saelens).
Convenciones
A lo largo de este libro, escribimos fun()
para referirnos a funciones, var
para referirnos a variables y argumentos de funciones, y path/
para rutas.
Los bloques de código más grandes entremezclan entrada y salida. El resultado se comenta de modo que, si tiene una versión electrónica del libro, por ejemplo, https://r-pkgs.org, puedes copiar y pegar ejemplos fácilmente en R. Los comentarios de salida tienen el formato #>
para distinguirlos de los comentarios normales.
Colofón
Este libro fue escrito usando Quarto dentro de RStudio. El sitio web está alojado con Netlify, y se actualiza automáticamente después de cada confirmación mediante acciones de GitHub. La fuente completa está disponible en GitHub.
Esta versión del libro fue construida con: