Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
belgrade2018_satrday_oop_Ildi_Czeller.pdf
Search
Ildikó Czeller
October 27, 2018
Programming
140
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
370
ropsec: a package for easing operations security for the R user
czeildi
2
670
The essentials to work with object-oriented systems in R
czeildi
0
140
Making email campaigns more effective: Send time optimization
czeildi
0
110
Other Decks in Programming
See All in Programming
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
14
8k
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
300
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
350
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
140
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6k
Crash Auto Pipelines
veronikapj
1
300
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
220
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
200
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.6k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
160
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.1k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
380
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Reviewing Like a Champion
maltzj
529
40k
Google's AI Overviews - The New Search
badams
0
1.6k
Believing is Seeing
oripsolob
1
260
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
240
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
540
Between Models and Reality
mayunak
4
540
Paper Plane
katiecoart
PRO
5
54k
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)