SlideShare une entreprise Scribd logo
1  sur  41
Everything you wanted to know
about making R packages but
were afraid to ask
Emily Robinson
@robinson_es
Five Topics
Motivating
Making
Documenting
Improving
Marketing
Why make a
package?
Isn’t making packages for “real programmers”?
Can you open and run R / RStudio?
Can you install a package?
Can you write R code?
Can you write an R function?
Can you learn to write an R function?
Excellent, you can write a package!
From Susan Johnston, as used in Jim Hester’s RStudio 2018 conference talk
https://resources.rstudio.com/rstudio-conf-2018/you-can-make-a-package-in-20-minutes-jim-hester
Does making a package take a lot of time?
“It took me such little time that I was hit with that familiar feeling of the
joy of optimization combined with the regret of past inefficiencies
(joygret?). I wish I could go back in time and create the package the first
moment I thought about it”
- Hilary Parker
https://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/
When is it time to write a package?
If you’ve copied and pasted
code three times, write a
function
If you’ve used the same
function across three
analyses, write a package
Benefits of making a package
Yourself
Your company
or team
Public
• Saves yourself time
• Reduces the risk of error
• Helps you share your code
• Includes documentation with your functions
• Give back to your community
• Builds your brand
How do you make
a package?
Two helper packages
Create the package structure, add a function
library(usethis)
create_package(“~/Desktop/nyrconf”)
use_r(“i_love_nyrconf”)
Add function documentation
use_roxygen_md()
• Write documentation
early, soon after you
finish a function
• It’s useful not just for
other people, but for
your own future self
Add function documentation
use_roxygen_md()
• Write documentation
early, soon after you
finish a function
• It’s useful not just for
other people, but for
your own future self
View your documentation
devtools::document()
?i_love_nyrconf
How do you
document your
package?
DESCRIPTION File
The Package Documentation Pyramid
Name
Title
(one sentence)
Description
(one paragraph)
README
Vignette
What’s in a name?
 Not taken on CRAN
 Not too long
 Is easy to google
 Evokes what it does
Other considerations …
https://twitter.com/hadleywickham/status/1008799676533964800
Title
• Describes what the package does
• One sentence, ideally < 65 characters
Description
• One paragraph focused on the value of your package
Summary
sentence
Benefits
Main
functions
README – Overview
README – Installation instructions
README – Examples
Vignette
• It’s a case study
• Use real and interesting data
• If it’s statistics package, make
a model; if it’s visualization
package, make a graph
Vignette
• It’s a case study
• Use real and interesting data
• If it’s statistics package, make
a model; if it’s visualization
package, make a graph
How can you improve
your package?
“This worked fine before …”
Solution: Unit Tests
Write tests with testthat
• Write tests early and often
so then you can safely
develop
• Whenever you fix a bug,
put in a test that would
have caught it
use_testthat()
use_test(“i_love_nyrconf”)
How do you market
your package?
Marketing is not a bad word
Publish it on GitHub
• GitHub lets you easily share
your package
• If you’ve never used GitHub,
check out Jenny Bryan’s
Happy Git and GitHub for the
useR
https://happygitwithr.com/
Make a website with pkgdown
• pkgdown::build_site()
Blog and tweet about it!
• Use #rstats
• Give a one line
motivation
• Can remix your
README and Vignette
Submit your package to CRAN
“If you want your package to have significant traction in the R community,
you need to submit it to CRAN. Submitting to CRAN is a lot more work than
just providing a version on GitHub, but the vast majority of R users do not
install packages from GitHub, because CRAN provides discoverability, ease
of installation and a stamp of authenticity.”
- Hadley Wickham
http://r-pkgs.had.co.nz/release.html
If you’re successful …
Resources
Drum roll please …
There’s a new R packages book in the works!!
https://r-pkgs.org/
Other resources
• Hilary Parker on writing an R package from scratch
• Jim Hester: “You can make a package in 20 minutes”
• Karl Broman’s tutorial
• Sharla Gelfand on usethis for reporting
• usethis website
• Maëlle Salmon on developing good R packages for open science
• Julia Silge’s beginner’s guide to TravisCI
Thank you!
bit.ly/nyrconf19
@robinson_es
hookedondata.org

Contenu connexe

Tendances

Break to build - the mindset of the modern day tester
Break to build - the mindset of the modern day testerBreak to build - the mindset of the modern day tester
Break to build - the mindset of the modern day testerViktor Slavchev
 
Start Learning Efficiently Now - Lean & Agile DC 2017
Start Learning Efficiently Now - Lean & Agile DC 2017Start Learning Efficiently Now - Lean & Agile DC 2017
Start Learning Efficiently Now - Lean & Agile DC 2017Elliot Susel
 
A Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileA Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileIlari Henrik Aegerter
 
Test automation – the bitter truth
Test automation – the bitter truthTest automation – the bitter truth
Test automation – the bitter truthViktor Slavchev
 
"Worst" practices of software testing
"Worst" practices of software testing"Worst" practices of software testing
"Worst" practices of software testingViktor Slavchev
 
Hindsight lessons about API testing
Hindsight lessons about API testingHindsight lessons about API testing
Hindsight lessons about API testingViktor Slavchev
 
Five Whys Lessons Learned
Five Whys Lessons LearnedFive Whys Lessons Learned
Five Whys Lessons LearnedTony Ford
 
Worst practices in software testing by the Testing troll
Worst practices in software testing by the Testing trollWorst practices in software testing by the Testing troll
Worst practices in software testing by the Testing trollViktor Slavchev
 
Robert Xiong's 5 whys Methodology
Robert Xiong's 5 whys MethodologyRobert Xiong's 5 whys Methodology
Robert Xiong's 5 whys MethodologyRobert Xiong
 
99 problems but feedback ain’t one
99 problems but feedback ain’t one99 problems but feedback ain’t one
99 problems but feedback ain’t oneCoco Bean
 
phxwebapp95
phxwebapp95phxwebapp95
phxwebapp95Thinkful
 
phxwebapp95
phxwebapp95phxwebapp95
phxwebapp95Thinkful
 
Agile Welly | Design Sprint 10 Tips
Agile Welly | Design Sprint 10 TipsAgile Welly | Design Sprint 10 Tips
Agile Welly | Design Sprint 10 TipsCharlotteHinton
 
Igor Andriushchenko - Tips and tricks for the efficient white-box security au...
Igor	Andriushchenko - Tips and tricks for the efficient white-box security au...Igor	Andriushchenko - Tips and tricks for the efficient white-box security au...
Igor Andriushchenko - Tips and tricks for the efficient white-box security au...NoNameCon
 

Tendances (20)

Geekbot at Open Coffee #102
Geekbot at Open Coffee #102Geekbot at Open Coffee #102
Geekbot at Open Coffee #102
 
5 whys
5 whys5 whys
5 whys
 
Break to build - the mindset of the modern day tester
Break to build - the mindset of the modern day testerBreak to build - the mindset of the modern day tester
Break to build - the mindset of the modern day tester
 
Start Learning Efficiently Now - Lean & Agile DC 2017
Start Learning Efficiently Now - Lean & Agile DC 2017Start Learning Efficiently Now - Lean & Agile DC 2017
Start Learning Efficiently Now - Lean & Agile DC 2017
 
A Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileA Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and Agile
 
Test automation – the bitter truth
Test automation – the bitter truthTest automation – the bitter truth
Test automation – the bitter truth
 
"Worst" practices of software testing
"Worst" practices of software testing"Worst" practices of software testing
"Worst" practices of software testing
 
RCCA
RCCARCCA
RCCA
 
Hindsight lessons about API testing
Hindsight lessons about API testingHindsight lessons about API testing
Hindsight lessons about API testing
 
Five Whys Lessons Learned
Five Whys Lessons LearnedFive Whys Lessons Learned
Five Whys Lessons Learned
 
Worst practices in software testing by the Testing troll
Worst practices in software testing by the Testing trollWorst practices in software testing by the Testing troll
Worst practices in software testing by the Testing troll
 
9akk105151d0113 5 whys
9akk105151d0113 5 whys9akk105151d0113 5 whys
9akk105151d0113 5 whys
 
Robert Xiong's 5 whys Methodology
Robert Xiong's 5 whys MethodologyRobert Xiong's 5 whys Methodology
Robert Xiong's 5 whys Methodology
 
Agile Practices
Agile PracticesAgile Practices
Agile Practices
 
99 problems but feedback ain’t one
99 problems but feedback ain’t one99 problems but feedback ain’t one
99 problems but feedback ain’t one
 
phxwebapp95
phxwebapp95phxwebapp95
phxwebapp95
 
phxwebapp95
phxwebapp95phxwebapp95
phxwebapp95
 
Testing for everyone
Testing for everyoneTesting for everyone
Testing for everyone
 
Agile Welly | Design Sprint 10 Tips
Agile Welly | Design Sprint 10 TipsAgile Welly | Design Sprint 10 Tips
Agile Welly | Design Sprint 10 Tips
 
Igor Andriushchenko - Tips and tricks for the efficient white-box security au...
Igor	Andriushchenko - Tips and tricks for the efficient white-box security au...Igor	Andriushchenko - Tips and tricks for the efficient white-box security au...
Igor Andriushchenko - Tips and tricks for the efficient white-box security au...
 

Similaire à Everything you wanted to know about making an R package but were afraid to ask

Introduction to r
Introduction to rIntroduction to r
Introduction to rgslicraf
 
Getting Started with the Cortana Skills Kit
Getting Started with the Cortana Skills KitGetting Started with the Cortana Skills Kit
Getting Started with the Cortana Skills KitRick Wargo
 
R package development, create your own package isabella gollini
R package development, create your own package   isabella golliniR package development, create your own package   isabella gollini
R package development, create your own package isabella golliniDataFest Tbilisi
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
Bootstrapping Tools and Practices
Bootstrapping Tools and PracticesBootstrapping Tools and Practices
Bootstrapping Tools and PracticesCliff McKinney
 
Managing a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days IrelandManaging a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days IrelandEmma Jane Hogbin Westby
 
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)Joxean Koret
 
Bootstrapping your plugin
Bootstrapping your pluginBootstrapping your plugin
Bootstrapping your pluginMarko Heijnen
 
WPSessions Composer for WordPress Plugin Development
WPSessions Composer for WordPress Plugin DevelopmentWPSessions Composer for WordPress Plugin Development
WPSessions Composer for WordPress Plugin DevelopmentCaldera Labs
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceAll Things Open
 
Craate Your Own PHP Package - DILo Surabaya
Craate Your Own PHP Package - DILo SurabayaCraate Your Own PHP Package - DILo Surabaya
Craate Your Own PHP Package - DILo SurabayaDILo Surabaya
 
Hactoberfest presentation
Hactoberfest presentationHactoberfest presentation
Hactoberfest presentationAITIKDANDAPAT
 
Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015ice799
 

Similaire à Everything you wanted to know about making an R package but were afraid to ask (20)

Untangling4
Untangling4Untangling4
Untangling4
 
Introduction to r
Introduction to rIntroduction to r
Introduction to r
 
Getting Started with the Cortana Skills Kit
Getting Started with the Cortana Skills KitGetting Started with the Cortana Skills Kit
Getting Started with the Cortana Skills Kit
 
R package development, create your own package isabella gollini
R package development, create your own package   isabella golliniR package development, create your own package   isabella gollini
R package development, create your own package isabella gollini
 
First app
First appFirst app
First app
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Bootstrapping Tools and Practices
Bootstrapping Tools and PracticesBootstrapping Tools and Practices
Bootstrapping Tools and Practices
 
Managing a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days IrelandManaging a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days Ireland
 
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
Bootstrapping your plugin
Bootstrapping your pluginBootstrapping your plugin
Bootstrapping your plugin
 
R development
R developmentR development
R development
 
Python
PythonPython
Python
 
BDD, Behat & Drupal
BDD, Behat & DrupalBDD, Behat & Drupal
BDD, Behat & Drupal
 
WPSessions Composer for WordPress Plugin Development
WPSessions Composer for WordPress Plugin DevelopmentWPSessions Composer for WordPress Plugin Development
WPSessions Composer for WordPress Plugin Development
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
 
Craate Your Own PHP Package - DILo Surabaya
Craate Your Own PHP Package - DILo SurabayaCraate Your Own PHP Package - DILo Surabaya
Craate Your Own PHP Package - DILo Surabaya
 
Hactoberfest presentation
Hactoberfest presentationHactoberfest presentation
Hactoberfest presentation
 
Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015
 

Dernier

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Dernier (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Everything you wanted to know about making an R package but were afraid to ask

Notes de l'éditeur

  1. Maybe cut?
  2. What are things you do over and over again that should be easy that are hard? Notice the problem you’re solving with this function is not specific to this one analysis – it’s generalizable. You might think “this would have been helpful last month”
  3. Usethis is magic. And it’s newer
  4. Function documentation – you know it exists, you sort of know what it does, you just forget details Package documentation – explaining the value of the package and introducing you to the main functions
  5. That goes in the R file – and it goes on the top of github page and shows in the preview on google results.
  6. If you can’t fit a description in one paragraph, maybe package is too broad Could be the abstract of a talk or paper If you have a few main functions, can mention there
  7. Point people where to start, where to go next If you have a package down site, link to it Many people will only see this Don’t have it be too long
  8. For example, here’s a vignette I wrote for forcats during tidyverse developer day Don’t create objects a, b, and c and add them together.
  9. Not just getting famous, want other people to get use out of it and contribute to it.
  10. When something you’ve counted on to work suddenly gives out on you. How can you prevent these cases?
  11. Not just getting famous, want other people to get use out of it and contribute to it.
  12. Marketing is equally important even if it’s something you only use within your company; people should know what use they can get out of your package Helps them! Not a selfish thing.