Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
belgrade2018_satrday_oop_Ildi_Czeller.pdf
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ildikó Czeller
October 27, 2018
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
belgrade2018_satrday_oop_Ildi_Czeller.pdf
Ildikó Czeller
October 27, 2018
More Decks by Ildikó Czeller
See All by Ildikó Czeller
Making Email Campaigns More Effective: Send Time Optimization
czeildi
0
360
ropsec: a package for easing operations security for the R user
czeildi
2
660
The essentials to work with object-oriented systems in R
czeildi
0
130
Making email campaigns more effective: Send time optimization
czeildi
0
110
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
210
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
450
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
今さら聞けない .NET CLI
htkym
0
180
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
620
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
300
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
260
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Building the Perfect Custom Keyboard
takai
2
830
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Designing for Timeless Needs
cassininazir
1
430
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Transcript
object-oriented systems in R Ildi Czeller : @czeildi
- Data Scientist @Emarsys - 3 years R - started
with C++, Python Me:
- R user without CS background - understand core concepts
- explore & debug more effectively You:
summary(lm(y~x)) ... Coefficients: ... Signif codes: 0 ‘***’ Multiple R-squared:
0.7262 Min. : 1.0 1st Qu.: 25.8 Median : 50.5 Mean : 10049.5 3rd Qu.: 75.2 Max. :1000000.0 summary(c(1:99, 10^6))
date: 2018-10-27 venue: Belgrade # participants: 100+ attend -> learn
talk at -> feedback organize -> proud data behavior + object =
S3
+36 1 333-3333
lm(y~x) summary summary.lm Coef R^2
lm(y~x) summary summary.lm dispatch method class + generic +
details
class / object type
type/class in R integer character list Date data.frame r_conference base
types S3 types
method summary.lm generic class as.factor
method summary.data.frame generic class as.Date.numeric class generic
generic summary <- function(object, …) UseMethod(“summary”) sum <- function(…, na.rm
= FALSE) .Primitive(“sum”)
summary(lm(y~x)) Coefficients: … Signif codes: 0 ‘***’ Multiple R-squared: 0.7262
summary.lm(lm(y~x)) dispatch
why so powerful?
flexible & extensible
base R + different packages work together
complex types can inherit behavior from simpler types
class is a vector c(”r_conference”, “conference”, “event”) most specific à
à à least specific
specialize • print(data.table()) • print.data.table(data.table()) Sepal.Length Sepal.Width 1: 5.1 3.5
2: 4.9 3.0 3: 4.7 3.2 4: 4.6 3.1 5: 5.0 3.6 --- 146: 6.7 3.0 147: 6.3 2.5 148: 6.5 3.0 149: 6.2 3.4 150: 5.9 3.0 • print(data.frame()) • print.data.frame(data.frame()) Sepal.Length Sepal.Width 1 5.1 3.5 2 4.9 3.0 3 4.7 3.2 4 4.6 3.1 5 5.0 3.6 6 5.4 3.9 7 4.6 3.4 8 5.0 3.4 9 4.4 2.9 10 4.9 3.1 …
fallback • summary(data.table()) • summary.data.table(data.table()) • summary.data.frame(data.table()) Sepal.Length Min. :4.300
1st Qu.:5.100 Median :5.800 Mean :5.843 3rd Qu.:6.400 Max. :7.900 • summary(data.frame()) • summary.data.frame(data.frame()) Sepal.Length Min. :4.300 1st Qu.:5.100 Median :5.800 Mean :5.843 3rd Qu.:6.400 Max. :7.900
extend gift.conference gift.r_conference
learn more
explore • seq.Date • data.table:::print.data.table • lookup::lookup(“sum”) – Jim Hester
• https://github.com/wch/r-source
explore • sloop – R package by Hadley Wickham •
s3_class, ftype • s3_dispatch • s3_methods_class, s3_methods_generic
Advanced R by Hadley Wickham https://www.ildiczeller.com/2018/ 04/02/investigating-difftime- behavior/
take-away
use understand (create)