Upcoming SlideShare
×

# 第三回R勉強会

1,858 views

Published on

0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
1,858
On SlideShare
0
From Embeds
0
Number of Embeds
1,336
Actions
Shares
0
4
0
Likes
0
Embeds 0
No embeds

No notes for slide

### 第三回R勉強会

1. 1. 第三回Ｒ勉強会Ｒ言語のループ処理について
2. 2. R言語でほかのプログラミング言語と同じ：●for文●while文●repeat文実行を振り返すためにループがある。。。
3. 3. for> for (i in 1:10) cat(pnorm(i)," ")0.8413447 0.9772499 0.9986501 0.9999683 0.9999997 1 1 1 1 1for (name in expr_1) expr_2> for (i in 1:ncol(faithful)){>print(c(min(faithful[,i]),max(faithful[,i]),mean(faithful[,i]),median(faithful[,i])))> }> xyz = list(42,c(1,2,3),matrix(c(1:4),2,2))> for (i in 1:length(xyz)) xyz[[i]] = xyz[[i]]+1[1] 43[1] 2 3 4[,1] [,2][1,] 2 4[2,] 3 5
4. 4. while> while (i < 5){print(dnorm(i))i = i+1}[1] 0.3989423[1] 0.2419707[1] 0.05399097[1] 0.004431848[1] 0.0001338302while (condition) expr
5. 5. > x = 2> repeat{> print(x)> x = x^2> }...[1] Inf[1] Inf[1] Inf[1] Inf[1] Inf[1] Inf[1] Inf[1] Inf[1]...repeat exprrepeatx = 2repeat{print(x)x = x^2if(x == Inf ) break}[1] 2[1] 4[1] 16[1] 256[1] 65536[1] 4294967296[1] 1.844674e+19[1] 3.402824e+38[1] 1.157921e+77[1] 1.340781e+154Break 以外には　next　(AKA ”continue”)　もあります
6. 6. R言語でほかのプログラミング言語と同じ：●for文●while文●repeat文実行を振り返すためにループがある。。。
7. 7. Warning: for() loops are used in R code much less often than incompiled languages. Code that takes a ‘whole object’ view is likelyto be both clearer and faster in RAn introduction to R(http://cran.r-project.org)けど。。。
8. 8. 1. Built in functionsmaximum = function(mtrx){mx = mtrx[1,1]for(i in 1:ncol(abc)){for(j in 1:length(abc[i,])){if(mtrx[i,j]>mx) mx = mtrx[i,j]}}return(mx)}maximum(abc)> max(abc)> system.time(maximum(abc))ユーザ システム 経過0.90 0.00 0.91> system.time(max(abc))ユーザ システム 経過0.02 0.00 0.01> set.seed(42)> abc =matrix(matrix(rnorm(10e5),nrow=10e2))様子はー万だけ
9. 9. 1. Built in functions数学の手段 R言語の関数全額 sum平均 mean中央値 median分散 var共分散 cov相関 cor対数 log値の範囲 range尺度 scaleR言語の関数はVectorizationということ使ってベクターのようなオブジェクト一緒に扱って処理します
10. 10. ,2 ,31,2,3,,１58.559.558.056.5157.5156.0 057.055.5> apply(myMatrix,1,mean)[1] 57.0 104.5 58.058.0104.557.0平均272.5268.0 118.0全額> apply(myMatrix,2,sum)[1] 268.0 272.5 118.02. apply, lapply, sapply...Apply – apply function over array margins> apply(myMatrix,c(1,2),sqrt)[,1] [,2] [,3][1,] 7.449832 7.549834 7.648529[2,] 12.489996 12.549900 0.000000[3,] 7.516648 7.615773 7.713624> sqrt(myMatrix)
11. 11. 2. apply, lapply, sapply...> set.seed(42)> abc =matrix(matrix(rnorm(10e5),nrow=10e2))my.mean = function(mat){res.vec = vector()for (i in 1:ncol(mat)){my.sum = 0for (j in 1:length(mat[,i])){my.sum = my.sum + mat[j,i]}my.col.mean = my.sum / length(mat[,i])res.vec = append(res.vec,my.col.mean)}return (res.vec)}> apply(abc,1,mean)> system.time(apply(abc,2,mean))ユーザ システム 経過0.01 0.01 0.03> system.time(my.mean(abc))ユーザ システム 経過0.92 0.00 0.92
12. 12. 2. apply, lapply, sapply...● lapply – apply function over list or vector● sapply – user-friendly version of lapply● vapply – similar but return specified values● rapply – recursive apply● tapply – apply function to a ragged array● mapply – apply a function to a multiple listinput???output???
13. 13. 3. plyrのパッケージAP PLY + Rパッケージの名前について：data frame data framelist arrayInput Output 関数名前ddplylaplyarray none a_ply
14. 14. 3. plyrのパッケージGET https://api.twitter.com/1.1/statuses/home_timeline.json[{"coordinates": null,"truncated": false,"favorited": false,"created_at": "Mon Jun 27 19:32:19 +0000 2011","id_str": "85430275915526144","user": {"profile_sidebar_border_color": "0094C2","profile_background_tile": false,"profile_sidebar_fill_color": "a9d9f1","name": "Twitter API",},…...}]