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
Rcpp for everyone
Search
teuder
March 31, 2017
Technology
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rcpp for everyone
Brief introduction of learning resources for Rcpp.
teuder
March 31, 2017
More Decks by teuder
See All by teuder
あまぁいRcpp生活
teuder
1
520
Other Decks in Technology
See All in Technology
AI AgentによるEmbedded SREの取り組み
tgidgd
1
360
SSFの現在地 ― CAEP/RISCからAI Identityへ
oidfj
0
250
BALLAS Technology Deck
ballas_inc
0
250
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
5
1.2k
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
190
顧客合意を取りながら進めるAWSコスト削減の実践
optim
0
140
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
390
eBPF 簡介 2026 版
shunghsiyu
0
190
The future of architectural work
ufried
0
190
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
110
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
210
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Thoughts on Productivity
jonyablonski
76
5.5k
Balancing Empowerment & Direction
lara
6
1.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Test your architecture with Archunit
thirion
2
2.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
980
Skip the Path - Find Your Career Trail
mkilby
1
290
Transcript
3DQQGPSFWFSZPOF ବ@teuder
"CPVUNF ాਅथ .BTBLJ&5TVEB 1I% -JGFTDJFODFT #VTJOFTT$POTVMUBOU XJUI %BUB4DJFODF
3DQQ 3DQQJTBQBDLBHFUIBUFOBCMFTZPV UPJNQMFNFOU3GVODUJPOTJO$ #ZVTJOH3DQQ ZPVDBOXSJUF$ DPEFJOBTUZMFTJNJMBSUP3
None
%JSL&EEFMCVFUUFM
5PEBZ *EPOPUUBMLBCPVUIPXUPVTF3DQQ CVUJOUSPEVDFZPVTPNFVTFGVMSFTPVSDFT XIFOZPVXBOUUPMFBSO3DQQ
5IFNBKPSSFTPVSDFTGPS MFBSOJOH3DQQ "EWBODFE3 3DQQ(BMMFSZ 3DQQ/PUF 7JHOFUUFT
"EWBODFE3 (SFBUJOUSPEVDUJPOUP3DQQ #VUJUMBDLTTPNFEFUBJMT )PXDBO*NPWFUPUIFOFYUTUFQ
3DQQ(BMMFSZ (SFBUDPNQJMBUJPOPGHPPEFYBNQMFT #VUUIFJOGPSNBUJPOJTGSBHNFOUFE )PXDBO*HFUUJEZLOPXMFEHFBCPVU3DQQ
3DQQ/PUF (SFBU$ TUZMFSFGFSFODFEPDVNFOU #VUJUPOMZQSPWJEFMJNJUFEJOGPSNBUJPO )PXDBO*HFUNPSFQSBDUJDBM BOENPSFTZTUFNBUJDBMLOPXMFEHF
*OUIFTFEBZT *DPVMEOPUpOEBEPDVNFOUMJLFUIBU*XBOU #VUPOFEBZ *SFNFNCFSFEBQISBTF *`WFTFFOPOUIFJOUFSOFU
If there does not exist what you want, just create
it. That should have been the oath of HOXO-M ! ͳ͚Ε࡞Δɻ ͦΕ͕ϗΫιΤϜͷ͍ͩͬͨͣʂ
IUUQTXXXHJUCPPLDPNCPPLUFVEFSJOUSPEVDUJPOUPSDQQEFUBJMT *XSPUFB3DQQ8FC#PPL
&OHMJTIWFSTJPOJTBMTPBWBJMBCMF IUUQTXXXHJUCPPLDPNCPPLUFVEFSJOUSPEVDUJPOUPSDQQEFUBJMT
$POUFOUTPGUIFCPPL 7FDUPS .BUSJY -JTU %BUB'SBNF 4 3MJLFGVODUJPOT 1SPCBCJMJUZEJTUSJCVUJPOT 6TJOH3GVODUJPOTGSPN3DQQ "UUSJCVUFT
/"/BO*OG &OWJSPONFOU &SSPSIBOEMJOH BOENPSFʜ
4JODFUIF&OHMJTIWFSTJPO XBTSFMFBTFE 1BHFWJFXTEPVCMFEBOEJTTUJMMHSPXJOH 3FMFBTFPG&OHWFS /PW 5JNFTFSJFTPGQBHFWJFXTJOUIFMBTUNPOUIT
1BHFWJFXTCZDPVOUSJFT (FSNBOZJTUIFSEQMBDF #VUMBSHFMZCFIJOEGSPN64BOE+BQBO 1BHFWJFXTJOUIFMBTUNPOUIT
8IBUXPVMECF UIFHPPETJUVBUJPOUPVTF3DQQ w -PPQTJOXIJDIMBUFSJUFSBUJPOEFQFOETPOUIF QSFWJPVTJUFSBUJPO w 3FDVSSFOUDBMMTPGGVODUJPOJOMPPQ w "DDFTTJOHFBDIFMFNFOUTPGWFDUPSEBUBGSBNF w
$IBOHJOHTJ[FPGBWFDUPSBUSVOUJNF w 0QFSBUJPOUIBUOFFEBEWBODFEEBUBTUSVDUVSF BOEBMHPSJUIN
#FDBVTF3DQQSFRVJSFTZPVBOFYUSBDPTU :PVNJHIUCFBCMFUPNBYJNJ[FZPVSRVBMJUZPGMJGF XIFOZPVVTFJUUPCSFBLCPUUMFOFDLPGZPVSDPEF 8IBUXPVMECF UIFHPPETJUVBUJPOUPVTF3DQQ
*ONZDBTF $POWFSUJOHEBUBGSBNFUPTQBSTFNBUSJY df %>% as.matrix %>% Matrix::Matrix(sparse = TRUE) #VUDPOWFSUJOHNBUSJYGBJMTXIFOUIFEBUBJT
SFMBUJWFMZMBSHF BCPVUTFWFSBMUFOTPG(# df %>% asSparseMatrix 4P*DSFBUFB3DQQGVODUJPODPOWFSUJOHUIFEBUB EJSFDUMZUPTQBSTFNBUSJY
#include <Rcpp.h> using namespace Rcpp; %FpOJOHBGVODUJPO // [[Rcpp::export]] S4 asSparseMatrix(
DataFrame df ){ // prerequisite : // all the elements DataFrame is numeric/integer // and not containing NAs. // number of rows and columns int nrow = df.nrows(); int ncol = df.length();
6TJOHTUEWFDUPSJOTUFBEPG3DQQ7FDUPS #FDBVTFDIBOHJOHTJ[FPGWFDUPSBUSVOUJNF JTOPUFGpDJFOUJO3DQQ7FDUPS std::vector<R_xlen_t> rows; std::vector<R_xlen_t> cols; std::vector<double> vals;
4UPSJOHUIFQPTJUJPOTBOEWBMVFTPG OPO[FSPFMFNFOUTJOUIF%BUB'SBNF for(R_xlen_t col=0; col<ncol; ++col){ NumericVector column = df[col]; for(R_xlen_t row=0; row<nrow; ++row){ if(column[row]!=0.0){ rows.push_back(row+1); cols.push_back(col+1); vals.push_back(column[row]); } } }
$BMMJOH.BUSJYTQBSTF.BUSJY Environment env = Environment::namespace_env("Matrix"); Function sparseMatrix = env["sparseMatrix"];
$POWFSUJOHTUEWFDUPSUP/VNFSJD7FDUPS S4 sm = sparseMatrix( Named("i") = wrap(rows), Named("j") = wrap(cols), Named("x") = wrap(vals), Named("dims") = NumericVector::create(nrow,ncol)); 4FUUJOHSPXOBNFTBOEDPMOBNFT List dimnames = List::create(R_NilValue, df.names()); sm.attr("Dimnames") = dimnames; 3FUVSOJOHUIFTQBSTFNBUSJY return sm; }
$PODMVTJPO w :PVDBOJNQMFNFOU3GVODUJPOJO$ XJUI3DQQ w 5IFSFBSFTV⒏DJFOUSFTPVSDFTGPSMFBSOJOH3DQQ w 3DQQJTTVJUBCMFUPCSFBLCPUUMFOFDLTPGZPVSDPEF *IPQFNZl*OUSPEVDUJPOUP3DQQz XPVMEBJECSPBESBOHFPGQFPQMF
&OKPZ
"EWFSUJTJOH 605 1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 24 ষɹɹRcpp Rcpp RcppRͷؔΛC++Ͱ࣮Ͱ͖ΔύοέʔδͰ͢ɻRͱྨࣅͨ͠ελΠϧͰهड़Ͱ͖ ΔΑ͏ʹ࣮͞Ε͍ͯΔͨΊɺC++ʹਂ͍͕ࣝͳͯ͘ར༻͘͢͠ͳ͍ͬͯ·͢ɻ͠ ͔ɺͦͷͨΊͷ࣮ߦ٘ਜ਼ʹ͞Ε͍ͯͳ͍ͷͰɺ୭ͰϋΠύϑΥʔϚϯεͳ݁ՌΛ ಘΔ͜ͱ͕Ͱ͖·͢ɻ 24-1 Rcppͷ׆༻γʔϯ ࣍ͷΑ͏ͳέʔεC++Ͱ࣮͢Δ͜ͱʹΑΓɺRͱൺͯߴԽ͕ݟࠐΊ·͢ɻ ɾ ܁Γฦ͠ॲཧɺಛʹ࣍ͷॲཧ͕લͷॲཧʹґଘ͓ͯ͠ΓฒྻԽͰ͖ͳ͍ ɾ ϕΫ τϧߦྻͷݸʑͷཁૉΞΫηε͢Δඞཁ͕͋Δ ɾ ϕΫ τϧͷαΠζΛಈతʹมߋ͍ͨ͠ ɾ ߴͳσʔλߏΞϧΰϦζϜΛ༻͍ͨॲཧΛߦ͍͍ͨ RcppͷύϑΥʔϚϯεΛࣔͨ͢Ίɺ܁Γฦ͠ॲཧͷྫͱͯ͠MCMCΞϧΰϦζϜͷҰछͰ͋ ΔΪϒεαϯϓϥʔ ʢ1ʣ ͷ࣮ྫΛࣔ͠·͢ɻ͜ͷྫͰɺΪϒεαϯϓϥʔʹΑΓඪ४2ม ਖ਼ن͔ΒnαϯϓϦϯά͍ͯ͠·͢ɻ ·ͣൺֱͷͨΊRΛ༻͍࣮ͨྫΛࣔ͠·͢ ʢϦετ24.1ʣ ɻ Ϧε τ24.1ɹGibbs.R GibbsR <- function(b, n, t){ # 2มඪ४ਖ਼ن͔ΒnαϯϓϦ ϯά # b : 2มͷڞࢄ # n : αϯϓϧ # t : αϯϓϦ ϯάࣺͤͣͯΔִؒ X <- matrix(0, nrow = n, ncol = 2) x1 <- x2 <- 0 sd <- sqrt(1-b^2) for(i in 1:n){ for(j in 1:t){ x1 <- rnorm(1, b*x2, sd) x2 <- rnorm(1, b*x1, sd) ʢ1ʣ ߴ࣍ݩͷෳࡶͳ֬ʹै͏ཚΛੜ͢ΔϚϧίϑ࿈ϞϯςΧϧϩ๏ͱݺΕΔΞϧΰϦζϜͷҰछͰ͢ɻ 24-1 24 ষ ٕज़ධࣾɹ੫ࠐԁ