From 22eaa3582831d7120ccc2cc8a50a79da356fc113 Mon Sep 17 00:00:00 2001 From: bryanzk Date: Sat, 20 Dec 2014 09:00:06 +0800 Subject: [PATCH 1/2] Programming Assignment2 ver 0.5 --- cachematrix.R | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/cachematrix.R b/cachematrix.R index a50be65aa44..3faaa5e9957 100644 --- a/cachematrix.R +++ b/cachematrix.R @@ -1,15 +1,36 @@ -## Put comments here that give an overall description of what your -## functions do +## Cache the inverse of a matrix. -## Write a short comment describing this function +## Create a special matrix which can store its inverse. makeCacheMatrix <- function(x = matrix()) { - + m <- NULL + set <- function(y){ + x <<- y + m <<- NULL + } + get <- function() x + setInverse <- function(solve) m <<- solve + getInverse <- function() m + list(set = set, get = get, + setInverse = setInverse, + getInverse = getInverse) } -## Write a short comment describing this function +## Before compute the inverse of matrix x, see if x has it cached , and return that if do. cacheSolve <- function(x, ...) { ## Return a matrix that is the inverse of 'x' + m <- x$getInverse() + if (!is.null(m)) { + message("getting cached data") + return (m) + } + data <- x$get() + m <- solve(data) + x$setInverse(m) + m } + + + From a68738f1efebb95d448dd0ef18e500a947261214 Mon Sep 17 00:00:00 2001 From: bryanzk Date: Wed, 24 Dec 2014 15:51:30 +0800 Subject: [PATCH 2/2] add ... parameter processing --- .RData | Bin 0 -> 7483 bytes .Rhistory | 46 ++++++++++++++++++++++++++++++++++++++++++++++ cachematrix.R | 4 ++-- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 .RData create mode 100644 .Rhistory diff --git a/.RData b/.RData new file mode 100644 index 0000000000000000000000000000000000000000..024a28eb4d14c9944f534fa4998e35907c29a343 GIT binary patch literal 7483 zcmYjVWmr^Qv<8t@5RgU?kS-}{20uy~K^jE5LqM7V3F(qyJ6_AnPFxw z-uvgCKW9B>ooB6gul??Kt!Fbt<6->ogLPtzYy4?o4m{F5<(IY<{2_^n9rBvuuO6QK z$H>~wCx4EEkC{qsg*f^76f`4ggdzHn1#=c0+8Q}I`2vktmeQI61&hd(v+>i>)5SI~ z^1tnAcRb*A*V7zywxG>;wuIo_cy{bbDwX|D+y6c$)A#M}fAlqmYnjHQ2J){tEHX2( z`v~6HEpELo(@a-b&zhEZxAT6N!_7N}a+WPWSrDzZ!zqA=`tV5C^#0L4T+{8~shyA< zfg|Koj`rSRPWQ(UQiREW=E!0AJ1MK{i9UD#zEI`SsSMdzVh$*uhn*S0#iFt6GQc!K^ZYBr=tNcp&Eaghd@fr*Km0<7XH$8=?Y^Mt` zNB1fjI=lJVE~-c-5J>0C!(Z#L9*DFblP_-sf*IYq*0GCN+LNwZnB#l6UmCbdJ9Tn~ zA;$u0*hsyv^j0f(QRlW9MmXq}0NAe1Hj#!nRN!)A7*%Jz1FSh4QmfWBwKOzcTU$M_ z3-cQrg&&#S;Pb7J);W(>|9NTk%Jqt!2GC@~H=mZp96gL27&X#dhHMVS73_BKA{XrI zUyJOA57&_KqI(HfL|bw~Py>t(erxW{r=Bgh>IZdVT-{<2D{ZL(f5G-@zlB+sS9NYv zD3F9ix1V8zkZa&c)!+s`Z-ZWJfgrBO;MQLHg0q-mlS{eYZD|G3NKSE%S~V{*ldUn@#^e{^%cg=%VrPr&>kg@4pjs=iB|UJE1DX?z-D1Kh${bllI9Q8!nH z1HFI0?pYnFwP#k32~+O_xz0v9j^c=n;H%&?-3$%xT=Vm*CQur7N=UXtTsDf)_UuK8 zph@e}iW{O5IM_D;tZJCI&muO`%JK3ao3}Qwu}WJ?&s#Th)R}emQG$gXe-tSBBZ7#N z0D6|XH{_ccAV9b{ag9bEqvnvhp>6na{lNty!%EOX+}d&X=!7cw+-}(?OFBF6u=Zhi zG$A@ql2CfEjWvcRgOb&$2LMDa=tl>tN%D_b>3;?8l^32g{WvuMSj#Q9i`O-e0wHU% zT$guaf6w)v@hSDj>a9%O5@$2#vutZA~*p>*sr2+SJwj(qWJmFMLviY*FWPJ)U^ zns$M2biAaAb`5wj*EkS;8>qlC zdPI>iD|OLj%G`ZpjRW;)k(Bx!P+z$kic8FeunsihQbGRyd+%X2wm3(wvedYZAOKJ~ zHa5UZqFSi;@+XX+wz;_2&w0Wd+rY;70?X1D{i8n*wkwZTen)S?98Ro}*0LR*C1c zv)n|BoCX_?Sa864fK1w(hg(qD9p6_1wm3tR^9}8h_2K{&WYBe6%-w=MY-~cD#z^<@ zq@Jy@J>cWXut)eItbaGUWX<8OOoQMI9zWnYx0<6M&kfH>Lnzr8jMum?cf?gpID)g6 zTMe?Ry@j(}0P*@8pY-jwp@@Se;U2FuV=rd&&!ecHo57Y7T==^RHmxjbrh&S9nQq&A z74lFK)zOrL<%T+{ZHJu}DgT4fF=1MNl{#Z<9H&#^`FZQ@#0mSn+h${vPj_mSkWqFG zEQsN{QlOW})ycI$ci_ekgkYfPr44ds%h^H%tXk+9gO}#daBX8ck{M;i6Sq93B>Bg*GEA!m<#T#(?h3%eesN{=3CgiG$&? zxk_E&2DzuT3!-(T0jy?HUu3C0v;b8xSx#O9*7KDAxq5rJ;d~b1kIv$kY8o}DJsqIv z7@vD3LgvK_C;YBTbT2x4lk}fC0S|e0lV(i=3>5Z@GdfIe%i`(n@i`j$18< zY`BU6Q68%5M=eM#lY<|%{5g4gerMqOht5fOth>1$Qp~>A^=x7wmt|a>T=E^u!_JSL z7JTv?R61j{f^<0jy^*neEN!%ft694e4k##8kXOzsv>uLt?HB2G zPvwzTrU8~W!608mvnrY&*Y{;s`@_g4QHpCHM7ZAM%=K_8u|@z>3k%M)wGvz1jJc$Z6(-%^Y!jmX|@!{8_*Lxbq9 z(A98@($w!Pr#RH-7wDNvroM}$m4Tj8%0vmkX&d@>ND%&WXWEGO)p5(99Rz9bRnt`cij(Hud^S) zddGIze|I)@B!hV0{haW|^VOn=-&tLF^7S?w@e=yzmtVZV=GyEWE+4WtfIBN6Y`Zo- zsTr@H7k1Vtrt90~uwjzc+89v%>g3eew^p=0r312KC%x8QmuONyD@GoE~Vto%9hwXTTCLM>G*wS3_XgZe@{%;OcFRIVz~VNy6@Ln>5aN_)NJ!aKE%vapB~w?r2v_latc$O!)v{H#wh|F({CPK*9)s0O6vU)` z9;LJuGG2ElDIwKkds09Grr&HVerUy&i`L#tF_`f;_1;#hnN8A_(m3LIXe)9_@g6TU zp_VG9X`{MWNmB~fjklNBqZMh=%6qq+)n|MdaHHN7WkLu)RrLBk}@w>m$&;`-WZ+>3dGGXwCbnW&=72Jg`S3R|!K)i0|Uh?2{Sv~f%A34V$op3-yh%O7x>6MqXH2n`eG(`LOO8JZ-M* z{P96GvPg0VS!LqFG*wuc2Z+bKn4LZi^Rlp|tfkw-kcu?qP*83}Lp*=C3={OO6UO?? zSvFI`B$?$CUK)B;&sHX%VDZ zgPnr+#2cHgBO9ovxE71nRxFFHYbqNctdJKaX5mm}exX>U`I>CXs!*)^Q{rnv%3Y{Ul$Ic@>@8& z%LY;TibW(_<90kH!i$ekg6Mbk4;6?`|Ym(B($h-(V!p7ejI1PXUUi@uOrGdgZVq3#O~cWLVdGjX4{0)Qk_ z?k*tt?W=E2<*&Jf`3QY53zBNMUOt_qnUoQCx>o(3eCn4OcDgSF#K;5sZ9@sHd|F5| z4PMKJP1R-qAGahtrudWs^WoR8*D120i3*U`KF&~r2vULrt>P$YZ0Wx)yKA2|ifTjn z_(QRR?N0oq?U%9MeB_$c=mimNGCtOf2T4%LfjMKGEMT^=Z)-2bu@QsA&Z!5aZ$U>=? zJ(-b`dWq>pF;+}V+ydW4!>h2KZ)6W9@r1ZI5Y6C}89d>jPQ8vG;D>zeAk!Z5?n+u8 zo>5fQ-Hn-y;3A0#i+P8w>b;vl&3(o%xzSfUKb=rm9PQIuDwFc=yQRdEA zq;;Eo`gt`Wd(6+0V7Hxm5D3VAC>g^@gXv1&|NL!SDN8@(la(@uwL-E>Y}xbv#Gkf? zM&sS_D7eMv;AOMJU>HOw67EMm?uGqw=(4XC?-Yl9>#kc$@q90cshwpmV}m~3*J6dT zDQtfii@l6t3>?S(P#EBeafki#0s$Gy4O^!?mw1AFz+ib$$8f=B?;e1ZQRjeUkrDj= zDWMsSTDSdWRbyoyE#KO6GUN)Tb8wm19@Na}%D}aI!X}aUt40NwvB;2~`U%o#3neq( zpX>%JoME_;*PsA0t>bQ3r!Q%7qGbahSkPrmW%xSr#%&NO`UsKM#5Oak@b1Lw= z$6*wrmr8RA^+h~v!(Ur968RBfG|dqcmRApWx{(@03bVyuNX2G*a5C7Dm3(&OGWtOd z=qDbwEvc=Vk7AfABO?SPG7!0{s1DtS_?KZ7QB97E6*Okm#RvR zH(@2;qcMV(v6LSqXg1=4NRbx%FGqsOkmi_RYC`&nDd`BdFNnl>E;$|?Cd%}LOP8ZbnL>cb#vU3%a1rD83>VL#; z8MK~?%`o{NRz+;f@85Qi(Oil^v) z_cX}JOu667GEZY)2p_uqB4ck<8 zg!;5ANaB|qc%uH1LB(b(q{|apv(hcVX-sEgcF37Zkc9a#E`02lHvae>M)JO1MOfax zUhr40iac^zu-3o2Un2-M;?n;^?oHa!%Y%f<*nNO|_M2?*v4R<7(m5HO*&zBN{a2wS z&@}XGZ56BNrXrO=;Bw6dUdS0h)n5$6>dyIFDftlTpca4}!AiCt+m|WZdt3y=emy=k z%Zy-NgVqktNC+qkB}3%np5ay%yHc0iaf6Uk+&6f{KaOSAPN4{P(*~L`TD9yc`xiodiPy{l!y3ex5lv% zzAKqbnbH!k5xuV2W6Ql=km<}5C-=rn1F5~et6tH!4?|(AK4HL zPn+>OBOheBZ@=H0IR@IqFc0^@jUe?u)Ne%B@ic$0^9RvlMY&#QGn7pGWV-~Hk^h~j z_7IP}s>Ecu)R;WrCImpxZ#tbYSda)8@tl5G<73dAscwy(JnOP`iVd6hh+_cSh@%+U*$QO%HrX1dFe=eCwBroIu=dns?fzC>Pr^wxcjyS-+ z2RYR5kuhHKk6aH-DFWUH?BO`)5%v$!sV;>}3$FFSbRXHhnm;Z3CZ(_ZwcLwxZ=TNIVlN`r|J|i(hK-x{QEg6FU`QD;E#7IlY-}j?h?wWQd;bcv>(6;&kL&{NQ4)| ziwWRJH0=t2GxPX1^Y&lnA)ub@UOQ@?^8f1x>{EyMb zJAQuwm5AJOtx~#+rxNolq)QcQcPMnLrj7_{a0__&oHTYr4V_NDP5%{px@l5?+uK+7 z>m0tCdB7ti-*Ikar_fW`b3;8bCwsP(-s$+<0To!Nxc*)QrAOO{uhEQe9jOw*G&_Zb z+pMh}d_;B*W(ob~?H2+)>L9x4#EGR|S(8&NMz$}+TyctgYU0USb`Y%md`9o+PcQwv zR44jMq>HwGG<6K7T$ zq;L<$Pg|e{iadO3zWs+kXuv|}8>pMYo^HuQ>oD~Kr`4{!ppquQ!%#14`^lXaTzr)9 zOX|cIj=cPi_F`m;BX6S zc$5~8{sxDQx3!@`0v(1(UzcFnqL^jw(+eS0-q@g5yBUt8K3BmtZo$M!0_Ow2=tJRe zC-xS!%IhTeqAn#{+sy)GztvO@%+sZaQ7bE%mb|>`OyMcEj+zlFnu*`$lGLaP4<)$3 zV9yKN%`-naBA=n^(+3#NpSXG3JXX01?vtQ9K8=V@~Du!h&8gz?V zE4FOXo8rWzlzKy_VRh6jNW_A zn#;Ing^*OR&v*U$`ZZx`=OED&!(`WK8fMGvKU0Y^5igXuC=*$Y(>V^!W3Z=7?h34Wi{|GgFi|UsnH1$}>8d~|z()K_UB{`+KD}Eq- zGmK}&TuhxwpXR74msn)KEt|M3yoHteft5ud!`$QJAi9EmhjD}KzeZ8EGXO&f-6fg{ zwGc-V7^5uAh+}X>%S=tJnjZ4ZPo|cGv!7JUL6?{*ZkcdehSr&H4Dv} zqSSuF&8}QZthdRMUjX_? zNv))Rj?PaotK95&dJ8bPB8wW}dz=*D6MZkT&!^Mf0&ItZr_-0<>5+=;yaqk7e_q1o zEYC`!9O)09#C*f-KbsS8#jr35s^RU_r~Fbu_;wDP3VhRl_#|dM#R**^8}F2UwDBWv z$-iehv-N|8Ng;p!|Gq99a?V#7$maT}1)Zv*1)bC5QG#1B`Kg9QBAxlDyncG{uTPtP z6YL6_oW64nimTKD|9RgBU3PU~6+PR$u+=R5sm1ADoqC)l!J$P~B(8lZ@!^da*JUPq zN(-O4Oxdl$N+x$o3$2X0S2Ne+4+7vsGLx)-)+NUc9~5UJcm3ZftANCu(~7|;&L9h! z>5!OVE#Fa5H!%X0K@nq_jRF&?B6_NPMy=%WpIqn+ed}U3R;@COLXf~y3Ne9||GY5n z#??+g@AWtE7cJqr%vqL=o|s!GHz1EM)w6M&>5`uBD*$c{a}>mexL&h&rds*VZ?Rcw z%^&+|wqlo=!c>g(nOt?MeZLWZ1IBXiAI9A;fj`$tW;urY>QMWoI^3+&eemzh!HQz?W)a)V z>49gSjJWP!iA6qg3Wf%~p(CA^D;o{DvE=W>BXBAFwD;8+D@yphEm13HMA8uc2aFQ^frDn?>O9)>wU`U)ZaY3{RmFnrm4~wdoHH(mw;^l2v3Z zq6t%f_^wc!G8;*3ILth0{;g-EcwV^Z(^6)e;bmHsL_af>8S^Pbu6Fd^7?ZPtwfn7N zg1A=Ar%?ZE0LZFvLk-a;55J!$#sAMfxfyT1*Q{!;+Y!y$9R-CX>URj+q oCw-biHj3@NW_!d*FFM7a;;NvTPDpyB4UWbjaMr*xPQk$VA4vmBtpET3 literal 0 HcmV?d00001 diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 00000000000..3ced35ef1ae --- /dev/null +++ b/.Rhistory @@ -0,0 +1,46 @@ +source('~/dev/r/ProgrammingAssignment2/cachematrix.R') +x <-matrix(rnorm(20), rif(10)) +x <-matrix(rnorm(20), rnorm(10)) +x <-matrix(rnorm(20), rnorm(20)) +x <-matrix(rnorm(20), rnorm(20)) +?matrix +mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, +dimnames = list(c("row1", "row2"), +c("C.1", "C.2", "C.3")) +mdat +mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, +dimnames = list(c("row1", "row2"), +c("C.1", "C.2", "C.3"))) +mdat +makeCacheMatrix(mdat) +cacheSolve(m) +cacheSolve(mdat) +d = makeCacheMatrix(mdat) +d +d$get() +cacheSolve(d) +mm <- matrix(c(1,2,3), c(4,5,6), c(7,8,9)) +mm <- matrix(c[1,2,3], c[4,5,6], c[7,8,9]) +b = matrix( c(1,2,3,4), nrow=2, ncol=2) +c = makeInverse(b) +c = makeCacheMatrix(b) +b$get +c$get +c$get() +d = cacheSolve(c) +debugSource('~/dev/r/ProgrammingAssignment2/cachematrix.R') +} +d = cacheSolve(c) +c$getInverse() +c$getInverse +debugSource('~/dev/r/ProgrammingAssignment2/cachematrix.R') +c$getInverse() +d = cacheSolve(c) +d +c$getInverse() +d = cacheSolve(c) +c$getInverse() +c$getInverse +d = cacheSolve(c) +debugSource('~/dev/r/ProgrammingAssignment2/cachematrix.R') +debugSource('~/dev/r/ProgrammingAssignment2/cachematrix.R') diff --git a/cachematrix.R b/cachematrix.R index 3faaa5e9957..d81b17a3523 100644 --- a/cachematrix.R +++ b/cachematrix.R @@ -20,14 +20,14 @@ makeCacheMatrix <- function(x = matrix()) { ## Before compute the inverse of matrix x, see if x has it cached , and return that if do. cacheSolve <- function(x, ...) { - ## Return a matrix that is the inverse of 'x' + ## Return a matrix that is the inverse of 'x' m <- x$getInverse() if (!is.null(m)) { message("getting cached data") return (m) } data <- x$get() - m <- solve(data) + m <- solve(data, ...) x$setInverse(m) m }