<TeXmacs|1.0.3>

<style|generic>

<\body>
  <section|Lecture 3>

  What did we learn last time?

  <\itemize-dot>
    <item>matrices: create with <verbatim|matrix()>.

    <item>Address entries in an array: <verbatim|a[2,2], a[1:2,1:2],
    a[,c(2,4)], a[a\<gtr\>8]>

    <item>Apply a function on all rows, or all column of an array:\ 

    <\itemize-dot>
      <item><verbatim|apply( a, 1, mean )> - calculate mean of all rows.

      <item><verbatim|apply( a, 2, mean )> - calculate mean of all columns.
    </itemize-dot>

    All this is very useful for bootstraping!

    <item>Functions: <verbatim|function(x) { x+1}>

    <item>Read data from file: <verbatim|read.table()>
  </itemize-dot>

  \;

  <subsection|read.table>

  We want to read the following table:

  <postscript|<tuple|<raw-data|GIF87a4\0\0\04DBLLJ\|$"db$$&D\\dfDDBL42tr,$df$"446TTRT\nTR$\\Zdbd424tvdD\<DBlDBDTTR,*ln\<:d\ntrt,,*,ljlLJ$"$,.L\\\|z\|LJL\<:\<:\<L\<Tlj,D\|z4\<\>L\\Z\\\\Z$dbtdTVtr4\|zLJ\\\<LN\|$&,*Dlj$&\<\<:\\db464\|~ԴLDFtTV\<\>d$,.,LN\\LNL\<\>\<\\4DFTdf,\|z̔42T\\^\|~\\D46tv,$ĄTVTTV$dfdd\<DFDT,.tvtlnl$&$\|~\|\<\>\<Lln,D\|~4\\^\\\\^$dftd$"\<46\\\n42\<LDBtTRlnLJT\<:\\trLN$&,*Llj\<\>l,,.4LN$dD-@(Ԓ`!@Pft\0=\0@\04\0\0\0\0\0\0\0\0\0\0-\0\0@\0$D\0\0(\0\0\0\0\0\0\0P\0qt\0!\0@(=@`\|D@@`\0\0\0\0\0\0Pt\0\0\0,\0\0\0\04\0\0\0)Hp80ÆJHqņ/jqǁ\0ĉ#Ȓ(O42e˕.cL4oϝ?{HѢH̘R\0JBuJ5զSj@O`J6lٱfӢ]ksַ\\^nBV+7޾d9+68qKd˔/#͟#wVeh\|Mw+]\0
  +l\0d-Ыfѡ+'cG#NWhb;ߵkjdH^y70dKn\\%Z\|_bBXE{Eg{gJ+QB].@yEH(x$4Tc6/2c:\ni$CX$G*ɣ(]7bW\nqkeaV^Dm)xcfa04Xp)snFvIZak駛zgxZtTRSWeYxNG9/2$(Z"Ҫʪ~*A#OJkkjXiZ(]iʲXC`l+j])S꒯nP$kMkO9e$ae[nT6Б%to+k\t\0-.mqa2[0RHP_*N)LJ]upQVZ93\>(+(Guӫ*JY1sMkWn-voXv!KtbJZXq붽bcQ-Ln'7G.9CTngw砇.褗n:瓧ꬷx^./o_\|7G/Ooc/'w݃NA~ODvv7@w"H\>\0w';ڮyd_@\nfaA\tZs6;\nKH.L\t/k]ArXPD`CP,'j\0AD=P~S,(\<,_LE4Zόx%\0Ѐ(8\0PE\0HAA\0XHBDBЋ_Т0`Bd%/ePD\01j))\<R0dp_b$%y;?6
  f^ς,qg`QTb\0N\n\\x@0dE.PܡS`6ٯP)Z2%)C\|o\nQTX\0qvBሠD@Pp'\\H6J\0R$%\\-sQ}tF5\nQ3@%T\<$eED'RA;7f.E)Vmħ
  LO)Ԕ5XW9.zH\n[LbOe+\>X\0aaՀ&T0v\00
  I\0\00,\0#uzeEd'[B\0\0Iآ\t-gZ7Vwe1YVh'ؽlSHQh\0VvX5\0
  $\|\0v\0@0(;Pbjz׷o"S-k'1^0m򴈐mb`eR"jo\0l2nvw(H3L\0U""pWb%\>PZJ^P;+w&F1~7̊ì\\:y1+ZZy½\0\0J\0\|vO}(\0\05̹#e5`r8UYȓcA(Q]H"À$\te~LtPmV!Z*i͸t,\0Ikg\<tme\>շe3jCgXʻFZ\0ŤkfujP
  כ`+t~tE¹:Rp5d7Ң.1/mt=͊z{޿{eML-8u?mO[TxgH%f&VÐ\n\>ĭa[\t$S3Ӷy7@o5_ydN\00ĲT+]LxYpF972BqjyZ}~\<ZrzoCO93Î;\0:YvV}e8\0\0yN\0eoG\<uz;8\0@;㎻\0jrf"At$\|ae[Nr{@\0i{v{\0_z}gڷ~=7\0{ྣ\0\0)dBeEz5@WeO~g~w;ɷ\|͗{{3wAp8#`vFuixU_Ruj0SH8Hc~Vx,X8x̅;ZF)kNP8R=H8?#?3H8.x;\>`oVX-}#`}*cz\0χ;]aztD[\t\0\0MPk^ff`("hT~Wx0kVZhIv`t\0_zP0xpIֆoshȇ\0\>pԊ=X\<Z׳z恋=RR
  w^sƌkd\<(xڣg3\>DP8PrRX?8uӍȊ;x\<\0%\t߸yX8=䑏ӊ(XcE9\nEy%[ّ
   "Y&9$yVAD;\0`0)196Y8I:y;\<\>=9@)O\nJLٔNPR9TITyXZ\\ٕ^`9VdYfcye?\t1GFp9oYrityz\|~iiɕYy阐9ZԒ}\t2IpI9O\0Д`8LQyٛY)ly\nQiQ\t\0yٙ\t\<PK82V8y9`y݉i3DΙFYIٜuYFyx
  SIuKIߩڠ\n頽99(qyʡ":$j\t$Ji\0\0\0\0(J^ɣi@:ZY&p
  p1IXp0G`@6[NOPed/il*x\0\01ڔ?R)@L[L@LI5\0[
  LIP1 2`P\nLH7`\t٨jH\tQ\t#jt0蹛'\np
  @@?\0JY\t\0LY\00\nL\tW\n\0Zګjc2\<
  8w\0X@)l\0n:@8V l`8P8ỏ*:1ɢY\tL`)\n;3L\tHJ8\n@)\0\tJñ"$3˫㹛p%
  pڑqJ !K2K)%K\nqr@0Rp4ЯpIS
  jU\n\00\0pJ)n`-ЯP.\0\0np@\0PqKyڸj{\>\0\0D[\tJa!\t^`\tU\0\t"+`\t\0W6
  0[P(`\t\0\0 +rP\np\tƋ\0kAꝿS
  \0jPFP\nt\0_+5QP Ǜ*: B.
  n![iJF\0p&Fꕧ2:
  鸎;9T\n[MyET`\td"`JM01"[\tJJY\n&֩GK\n=;"J)?̔\>KY\0[\0J\0D\njJQLi\|V30QO@{wl1y+0:,ɑ{[JK\00L7kOɪ1욢LI\0ܰܰSL"a^"{J)\0˿9:ò8z˱,Ex\\\<'OZ8\|8~Y
  Jp3L\\'\0NL)]лlM1:R\n\0\0,[9\n0\0\0S0MYxy\\Lǒ*19\0PǞ?Ivy顗l\>ë3̜˪)EP։̚1ϬмOյl=\t)B,}Lɴ٩
  \ \t\0 ց\t+̜2Y\0o){֥Gׅ飂`OU̛\0\0S\0J)wШK\0W͛=ָ;\nt\0\0\>`\|\0\n\00/p9Z#W\<)-5ƠyVn@\0GVގ;A}Cͧy\nU@T\nJ)[p1׫5Tp\t˺˸J9~ڱ­)@\06սtp'@\tKIBla7[1ƀؔ{lӿ3]8p
  0\tɗM\>*9ꔥ`Z7p8%K)9@!n#ްmn8o^XM-"b\nN8LД[K^b=5Ij,]r.`\0\0`0
  oӘ\>\>ܔ'\0\n{~JI3@2\t
  =\tE۷^칁ʎ\|e[\>iM0\nFX!\|ߓܗ6@vaΫ?Z`q\0\>\<Ҍkk$O#_Z䑡-,/wz(^\>NvZ/6oE%?O-A_UigIfI2J./\>XB?_,5u_xOGj\|Dw{@y,*\\?_.0OO_pY/_d=O/M_?R/ܶOA(_Cge2TO)Ь=p\nMɩ6pi@ԹL9@[
  jI\0J@DPB)\0 aĆ)VĘQP\<NiP!h5m޼9\0cO'ПE5J'"5zTӨAVjGy\\$hKĈ[NA,&/u9\|[0n^}=K0~t뷔\0\<!.ہ(lYf:/:5kRGT(UԬ][\n;i!k\0'N\|c
  \0*i,3h)E.Yn\0\\\|_ǈ~[\|#H҉r\0xXx?y)Z4D'l4N;͵'Z\0\<hN\0`f\0b\02T=dB0`䑡&
  {䫽\0 \0A UEή$\\-@BE`Hcb#Edd`Q3503BFc4\\ьp%0Nr&J\0%R^d"hUF82UU!
  (h#\0@*\\@(!URXO%iVHZ~``Մ%&\|6iN~HE#2,a(:Q)قՖ[{\tDGKRetS*d&t2\tB'=Kdt\n@_**DCG+'-\0:IE\n\nSIo"qƘ(D
  *d\0*U\t\0rdl&ƠzH2Ԯm{#Ԛ`ʓ,"r6O꺨(n{8d=\0~Hh,(X~@~Bc7i\0Y3"aVod8!5}u7l\n88dpBd({̒*2HZNW
  !1`#r2E8V\nG_Ze("lh1NADv\nE/EK@Qa,AXQX\n+\>mP%Ї+H\0BX\\տw@W/`/ƹ=\\\n\<f^A'@@5XE0`\0RxT(K9j\0E%*
  TJ+B!A*7Gz@Rz)d:C%#\0`h!
  \0~ǃPNAj8d:I8wI\0dr tXDj\n$D#rCW0`4%?9Q6\0\0"1BDX\0\0vX,s}bL~fvBVg(1\|PDܰ+3{'Ie\t%7RDr82"t%\nG0PDDІ\>t\0E9~A:6)\\.*-HJ1҈+"\n0ˣL5%^z\0\02dL&\|V(A$.F\01`SLƌ!X'bXP9乑Bḗ:\09!
  =rp8AȠ#_chU$.?P\0xD~rl cE\n
  "d\\TbVZ{1M*bփk9
  9a2N+UĂOf\08APC:AcV5Nuy\|+Q蹞%\\шqJk&Y%.Z7,i.PlrE,`q\0MYKj#t8S򋠄,:cZn($80ĩrDr3V#'U\<Pm5+HV2{bV'Kȭ2zrعIsLWn\ncf\tɰ@⯝L6kHq^
  Y\n1g'"gR,nC1@6\tNX偠+GvyA֛%A%8cÇau@T2P1]\0@2~\0Xn
  DmW(U46-*%4\<cCf){0APj+P&cq[X8u]n\>r/wD=8\>\0p"'I\0Q~\t\\qXU^a\nT\07btvԣȁT]6nW\0C\>R1KCj(
  EO\0T֙I4P'\0X垜1[ZmlǓ(\\^Jne*"pe[\n7Ftl@p,jD\>E0Z2ǸLG-9p2ZĴR$Yƫ'H\0=mM=[$O7]V\\\\\0\>90\0xr[Oz:df}\\RpmZ*~5\0ؕJIxX#LTɩ{U嚾AL؂U-F??:h-HP
  I\tƐ@5W\<֒8G?\tO@,x{=;ē-2?S?h"#BX#7\nHBBYB%\>P²2&ܲ$+{D,Cw\tà[vY(@7\>{m61̈2MbH(7%\0C/Dl-+t:45r6̶9lK:B;T\<VD\<R4S3,§s6QCI̾Ӳ,\tU4EDlH9_\03T\<D^DF!tҁCm3;ZH6Fָe:odG"Q0&QDǺ،FvdGxwxlVG{uGwGwl~H~$H{F5QȅdȆtHȉȊȋȌHȍȏI\tɌČ+1+X6'@YIDݡɚɛIqFI2)\>itC+ť8[J4Bʫʞ8ɯ*8`@\0F9ԓ'EԲCF%ȰXx\td\08A\<ȁP/tDd\t`H92
  9(f(ElD̍\nT3tLA\\D\<,4ܔ\t4IypdJL\n*k+ӄKKK(_1`
  1JܪC*\<PO\<ĕLlNxRO꜊g6(D\<\nDDk;]tΆؐ11Ă((^0PσHp\|EP݋hآ7\t\n(`,8YhTFքA9zʁBڋ)9c[M$OQYr&H3x[ɕI"OV:2ҪSs)\<Ur8ӈ@HXTNԂ(ZQO\tѭQE!!ISbSTȯ.:\|+8²{MRhՅȴПp
  \tG)W(s㘙ÛS\<)}(W8W\n׶a;hO\<WaƠW8Q!ͩ܄\0#-\n1xp3:83p\0OFlFf\t5H'%()`Ɂ\n!ق:(!%k8K[4WOPr\0!*5QEm9hWHO
  *TǨ)%GBU[\t)P"`J\>Ѭ\0ؘWl+X\\ʨtMy\nS)E}YI\<:L}ծV\0.RZ{ɴCj&H]]ͷ#@#:$J4gJݻғN
  *1R' 6\tu2!-P- \ Y5:)kJR9!E(A1]{鰛,\0FFRr1J-zҚ"TGP#/=-@ͧPa,\\Vo&8\tFT[,0K0΋\0-W,8tۉϋ,%^?Q$afۂbZK\0:2B*j
  :\>UK\\b\08u1ݻ\\jp?\|+&\>RS)b\|H)#0"2\nDEЅ܉4\nТUќ'@_jaE6^2I"=QQW\0cdͰ\t\|b_AC\|ݕ惨Qc3R^NU.3&gB㱓hc.'XՉjҁؘ`8\nc^%FU"s7M\0H1&B`C8*C@Bbbz+itFȪ-$*9v9fd!h{P\tܜ5WLBaX\n_%AP?av)DR0LMk~*gvg^SP#AK뺰ku⃅xxkы\t\|nE#\n9N#B*B7\>b7caF$ϸ\nn(PxۂiN`9\<@J@(\0$Nd8j?&UZִ\0UCBȖtm
  VPa^llh.kM\<kdLڠkTH\n9L^e׈g܉dkMbbv'pT?D*(A$ģFNAlФJdʭeMoa]VXÃm]pp,`7vpVmlɖpնnMoT\<`FcrfD~ϰm5_agY:-;ts7G~z?}DCWtDȁt\tMHJKɎMIMt$ү\<Z-ITWUgus;Nu,.ϴE8@+/Zu,vLe\nW72gg*]Ar\t0tKcOq2MNvTQ*LE[nr*^ͤXxMb'u?]uשZePnS\>$DB\\#\0m@P#Nx7wwM#4yTpƇ*-uHzJwov@//"3
  QxAFȮyQOeO%zhPUaBx`(^.@`67xd@\tF/ 
  E;)D益ynjY$[?Z`!w^g4C~oam"B艱V~EǇ\|8@&ES:R҇9~2VVc&8N-\07p+č\010fC1:\0${b
  \n\>1C'B4Hƌ7rcF\<\0Fu\0`㖓ix$̘2gҬi&Μ:ateW\tKd\0$C\0)UN"G\t\n\0Q
  ҝbcQ$IWL5JO(̝K.Lh9[.`\0\>46\0@䂇b?1YAd7W!a[i@$a3fUҲgӮm[lOF12\0\0j*F54\0bjZWbPMo]tj9#qu\02Z[\\9E*l.\0R6G\0CDƘ-5h\tBfuG\0\\QFF!!ȓka\02\0\nQ&T'hXdk#aiHVؐ_e)
  ehgY2QԈ\0\0* M\n\0.\0Q&q9[n9RX)eцxI{9L\<5f0myH(Q{Ub9\0\>_jj8ٖ'XY\0t)\0F@&kGu+F8*"v+m0kL','f-QBi]UBCajbI\0ePI*VrPBLpFuB;\<bRa$&+:\\FƬkٺ+JI۰9\<pGQ\0PF\0P1F$=n1-!AHJLyoO7\nKoDQ\\"tJ\0@K'CJ=0eWPQ\tX-tx6\0nst2TBrL6QmGVT4R\0SI3EVB[K;,Jj/Oj_l$ܡٱ\>VC1#޺IxMQ)6hC5Gnި[
  t`.}*M&zI-Ⅹ\t5" (?l=
  Ұfmd5Rdi0rxb\04"p.Ub9H{ae:$4l0D(a\tB0גFTI)ήT̉?1{.Db\>}2,a-rs[KLL\t\>714K!Df\\\t#fy4c'/E2R'4G}AO#PV2\|+[Sde+]⒗,e)`.x9&2e2t_)iRּ&6m.3&8ÙLos%:ψXJ\nB,ѳ'\>ωcmd(=˒Dx.S?Ġ@3?arQ'HOh:PJ1~t(LzW-d\\i\n\<d2wY*($9@`@aDwb*Ԫnlp@W\nn,?ݷ5C]BKfRXDR9a{FjĪ9ZHvYUag`[G0[֐R$LC
  0H"Q]]t5%TRRX+:"B&kTQu%,aW0@Fp8A^G]qd35G\>\0
  *چPt^uh\0`+7a[֪+#%\0$+)J#={h#@J}jC7s9fd!D,,1m"&9]hX\|@0aMIN_D2dP\t9-lA2,ט\tl@B*ʁeT
  mA0\n6B\t)!rgPQE@DH~Z(pTd0R0!7F"=JNQn9V+gy=3~z\0\0:㵯lWxj"LJ
  \0`C[&dXx2ז-ru"E#ߜI#,+&W0\0+[@\\$Ș47-kA`$%"-+\nu*5\t9f\0#W0`lDF\>ޖr*;#XiKL`x]ZI']K(='tݤ}\n,\n:#\0*@I3;W\\t7P,1yuq;\0'tGVަ`\|*UY_=45eMd5o\|{8S\0`ϻLEDgjp)\0\<Q]yAo``o(x`0{~\nINwW\0QX\n^F\<'ѕYb2#Wwt&A/kUҁsRM\>a89%X0`Ft(qxUk$r
  XBiĿ`@n\0N-GKe_LF\\@VF˿PΠF `Րk8
  *Ufs\ntpUTQauqDǐ\\(:LBJԋCy=}GD/4QU4[/`D
  \0Hd\t"aFD#0AkHFDeIB$vꐁmM&nkTb݉M@+j,D"!ލ"2#fı@j!ya,!=\tpxL%,\ndqW\<tpXKMnerP+?E@,ڟ\<՘\\\>`Xc\tkt^q_D2Vd\|y@@ga7[}@@yݘaل\nOa\n\<Rb$RdX*8BTj@bDT+\0&E`DJZhZ\|X%YBWn0*N]F*\>%EU^eVne@rOB21GD/@4EP2\\XCt\0\0CC
  }1`#bF\|\0 ]kК+
  4sdDoX\\"߰\0FX\\M@%&$ډsd\\l'"&&ogt`V&utmD#If\0#\0@!\01\0\0xt\0h8U
  EÌ\\\0D\0B"q\\IڬQPFEX#IG+f'a\\\0U޹AX!yX+hUe-
  \ TN}ZXTf)ڬ݄hhQP%8'\0@!&2J.=
  MB6B[D`%fX9"ܢI)hsT6%\0ϻygŦ\\]8+d(QEEaVq\nZTNNkkj[MԎjNBE\<j\|bڑiUN0\0U\t)*2lO`5(*MDoj
  O@-rj)\0\0\tDl\0)@P`B%@$DP"JdbD%`Q\0% \0&'PlA4mfvn&B$"yl"*,PʀB\|BʁHkni+J\>NSjI\<֒{=Iʄl**tFXr"ѭNMtKjDBWDƫn!F`mpEB\tD@│X\0ȁs@qn:-}m\n؊#'I*lЮR&.YL.QK\n%QZJB'lAIt¥nrnz&o/H
  .Mf)/[x-R0/-0R//+40GO_0[0?r4BS+T\t\t[/csD9p$y\t\t\t.\\\|&E\|ppJ0xj_z)QKgYirPƃiSSm#-u-ւ]Qelm]Yx~q夤IRY؅--hFg
  _m+\\mۥF1'AYɱ/\\q~d'GWE "\0'rLKn
  Jx&[B&$rBIVs)ll@#\\)VlZG85q!B\<q0lj!!KA\01m\\Xivl/G\tlN\0Du%J(w({3FW4vl.d+G9q֟@@hZ\t=2lA2_C1A0n]/D@@SX\t1It,"vD%+l0^(iD-0*A2!FWP@\tHDRVX@YWrUu[uI-H!Չ%0Zk0@a?6bYg1+[3\|rGn2^
  I$a\08\0Ig[D6[P @J'[l8#Dq\<\tBdo\\,vO\\[[`2ĠB'\n(wIđ\tysdHBz@I[[j+[IIzFS)8a^wvamI#.NLą\nh1p\00C02\\hf\0=6#.$e˻a5KC$[#8TU`qE\|EX(ŦHP.k9n9T\0({ۄ^%_Pny?ETpryVt1CcDŞ1vA40\0\<1\0@te8dt\0XC2A\0\0sA\<S%~\0LvBw\|Gxׯε:Jkf"Fb\tڙRQ{p\0aBq!Ra{t_2F\0!!+oLXq\<`
  {I:*%xPmA-{x4̜L1vȸ\0ȊdsCG,\0îc\0${dalb#Jd҈,jP\0ePտ+;RPVc\t@RѫOd&k=\0\|8\|9F༇?0]dhQ_(4\tVC³=0
  㳼/QL\<;R\tGk\t!\0AZ"Bz_2*\>O؃[c\>6G\\~,;\\x&TDOAzu\|C\|xhprf`2L1\0{c\nL@R\n\00e`U:(
  }+\<S@\<#V\0@ŕB]9\t\0QѨK\n!\0\0d$P/\0H
  "%L7qԹgϞ *,QFEx2eÕ%g֌9gUU^Պ-:Og)e\nZf{b-OΥGBw\>A\0ncO`:\0{\|qgϛmN\0R\0LyX,i@'Yi\05\0KG\>M1\0B7j\0\\p\n+(\\enQ\0PoѸp\0KǗ"7.ys\t]I;VM?,P-0't\nck!\0IDc\n7\0t˘3\\\0BRI;ANs󪠂F\0`\n\0N8!-\07\t3
  rd\n\n^\0p%\0@"Z\0!4d8/PL+\tN9ɸ-)*QIO#\n%JzHŜ7Q´PRI=\0a5K(\0A*rK\n1l6ò6Qp'kCcSA043XddJ\0Luת,rࡤ!ܦWf}HaP\>bpDDF"\tJa2WY'SVHT*!Jye\tԕ"}\nm'$C#`13x7`z3B]h`1\0^%4(]9O!:Pd"KfSL*)Tr9x(O`ANiWPdU\>_衑o\\#-bh"M3;M}HyU:-wȋy\0%V;Y"x^cm^Ŭ\<9(\nHAdO\>яnD-pmwV@(QC("SSp(pRD`H)`at9t"vF1pӶ5+.krjh$*Χ\\;I+f0A)ixq\|#"NB\nR)
  @1\|\>&kOZ14p\0\0IQgY)&?bH\\k!g/6rIe\<d"$4R+/La41Le.x/=Jц޲'\>lj36Mqzsf8͙rr;\tNnZ=O}'yr5AP.uC!ЀE1Q4(@\0;>|gif>|*5/8|*5/8||||>

  We saved it as comma separated values.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=read.table("example2.csv",head=T,row.names=1,as.is=3, sep=",")
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      \ \ \ \ \ \ \ \ height \ \ \ \ \ \ \ \ \ \ \ \ email hair.color age

      michael \ \ \ 175 \ \ \ \ \ \ \ \ \ lachmann \ \ \ \ \ brown \ NA

      sarah \ \ \ \ \ 180 \ \ \ \ sarah@aol.com \ \ \ \ \ black \ 20

      fred \ \ \ \ \ \ 150 \ \ f.smith@msn.net \ \ \ \ \ \ \ \ \ \ \ \ 10

      John \ \ \ \ \ \ 210 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ blond
      \ 25

      Bilbo \ \ \ \ \ \ 90 b.bagins@shire.me \ \ \ \ \ black 111

      Andrew \ \ \ \ 150 \ \ \ \ \ \ andy@aol.de \ \ \ \ \ blond \ 35
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Normaly, R will convert a string column that is read in into categorical
  data. To prevent R from doing that, you should give the <verbatim|as.is>
  argument, with the columns that should be read as strings.

  If a column has values that are essencially all different, store as string.
  If some values are the same and you will compare between values, use
  categorical data (i.e. no <verbatim|as.is>)

  The are many ways to access the data in the table:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a$height
    </input>

    <\output>
      [1] 175 180 150 210 \ 90 150
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a$hei
    </input>

    <\output>
      [1] 175 180 150 210 \ 90 150
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a$hai
    </input>

    <\output>
      [1] brown black \ \ \ \ \ \ blond black blond

      Levels: \ black blond brown
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  The method using the dollar sign takes a column. You can see that you can
  abbreviate the name.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[,1]
    </input>

    <\output>
      [1] 175 180 150 210 \ 90 150
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[1:2,]
    </input>

    <\output>
      \ \ \ \ \ \ \ \ height \ \ \ \ \ \ \ \ email hair.color age

      michael \ \ \ 175 \ \ \ \ \ lachmann \ \ \ \ \ brown \ NA

      sarah \ \ \ \ \ 180 sarah@aol.com \ \ \ \ \ black \ 20
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[,"email"]
    </input>

    <\output>
      [1] "lachmann" \ \ \ \ \ \ \ \ \ "sarah@aol.com"
      \ \ \ \ "f.smith@msn.net" \ 

      [4] "" \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "b.bagins@shire.me"
      "andy@aol.de" \ \ \ \ \ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[,"ema"]
    </input>

    <\output>
      Error in "[.data.frame"(a, , "ema") : undefined columns selected
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  You can not abreviate when you use <verbatim|[]>.

  We want to sort the table by height. How do we do that?

  Here the function <verbatim|order()> helps. It gives us the order of
  elements.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      \ \ \ \ \ \ \ \ height \ \ \ \ \ \ \ \ \ \ \ \ email hair.color age

      michael \ \ \ 175 \ \ \ \ \ \ \ \ \ lachmann \ \ \ \ \ brown \ NA

      sarah \ \ \ \ \ 180 \ \ \ \ sarah@aol.com \ \ \ \ \ black \ 20

      fred \ \ \ \ \ \ 150 \ \ f.smith@msn.net \ \ \ \ \ \ \ \ \ \ \ \ 10

      John \ \ \ \ \ \ 210 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ blond
      \ 25

      Bilbo \ \ \ \ \ \ 90 b.bagins@shire.me \ \ \ \ \ black 111

      Andrew \ \ \ \ 150 \ \ \ \ \ \ andy@aol.de \ \ \ \ \ blond \ 35
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      order(a$height)
    </input>

    <\output>
      [1] 5 3 6 1 2 4
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  So <verbatim|a> will be sorted by height if we write first the 5th row,
  then the 3rd, then the 6th, then the 1st, and so on. we can do that like
  this:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      i=order(a$height)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      i
    </input>

    <\output>
      [1] 5 3 6 1 2 4
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[i,]
    </input>

    <\output>
      \ \ \ \ \ \ \ \ height \ \ \ \ \ \ \ \ \ \ \ \ email hair.color age

      Bilbo \ \ \ \ \ \ 90 b.bagins@shire.me \ \ \ \ \ black 111

      fred \ \ \ \ \ \ 150 \ \ f.smith@msn.net \ \ \ \ \ \ \ \ \ \ \ \ 10

      Andrew \ \ \ \ 150 \ \ \ \ \ \ andy@aol.de \ \ \ \ \ blond \ 35

      michael \ \ \ 175 \ \ \ \ \ \ \ \ \ lachmann \ \ \ \ \ brown \ NA

      sarah \ \ \ \ \ 180 \ \ \ \ sarah@aol.com \ \ \ \ \ black \ 20

      John \ \ \ \ \ \ 210 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ blond
      \ 25
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[ order( a$height ) , ]
    </input>

    <\output>
      \ \ \ \ \ \ \ \ height \ \ \ \ \ \ \ \ \ \ \ \ email hair.color age

      Bilbo \ \ \ \ \ \ 90 b.bagins@shire.me \ \ \ \ \ black 111

      fred \ \ \ \ \ \ 150 \ \ f.smith@msn.net \ \ \ \ \ \ \ \ \ \ \ \ 10

      Andrew \ \ \ \ 150 \ \ \ \ \ \ andy@aol.de \ \ \ \ \ blond \ 35

      michael \ \ \ 175 \ \ \ \ \ \ \ \ \ lachmann \ \ \ \ \ brown \ NA

      sarah \ \ \ \ \ 180 \ \ \ \ sarah@aol.com \ \ \ \ \ black \ 20

      John \ \ \ \ \ \ 210 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ blond
      \ 25
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  <subsection|names>

  In R, almost everything can have names:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=1:4
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      [1] 1 2 3 4
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      names(a)
    </input>

    <\output>
      NULL
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      names(a)=c("a","b","c","d")
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      a b c d\ 

      1 2 3 4\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      names(a)
    </input>

    <\output>
      [1] "a" "b" "c" "d"
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Now we see that each entry has a name.

  An easier way to do the same:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x=c(first=3,second=4)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      \ first second\ 

      \ \ \ \ \ 3 \ \ \ \ \ 4\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  This is useful when functions return values, because it tells us what each
  value is:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=rnorm(100)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      summary(a)
    </input>

    <\output>
      \ \ \ Min. 1st Qu. \ Median \ \ \ Mean 3rd Qu. \ \ \ Max.\ 

      -2.2070 -0.6992 \ 0.2073 \ 0.1538 \ 0.9701 \ 2.6370\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  <verbatim|summary> is a function, and the values that it returns have
  names:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      sum.a=summary(a)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      names(sum.a)
    </input>

    <\output>
      [1] "Min." \ \ \ "1st Qu." "Median" \ "Mean" \ \ \ "3rd Qu." "Max."
      \ \ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      sum.a["Mean"]
    </input>

    <\output>
      \ \ Mean\ 

      0.1538\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      sum.a["Max."]
    </input>

    <\output>
      \ Max.\ 

      2.637\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  matrices and data.frames have names for the rows and columns:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=matrix(1:6,2,3)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      \ \ \ \ \ [,1] [,2] [,3]

      [1,] \ \ \ 1 \ \ \ 3 \ \ \ 5

      [2,] \ \ \ 2 \ \ \ 4 \ \ \ 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      rownames(a)=c("first row","second row")
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      colnames(a)=c("a","b","c")
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      \ \ \ \ \ \ \ \ \ \ \ a b c

      first row \ 1 3 5

      second row 2 4 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[,"a"]
    </input>

    <\output>
      \ first row second row\ 

      \ \ \ \ \ \ \ \ \ 1 \ \ \ \ \ \ \ \ \ 2\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a[,"b"]
    </input>

    <\output>
      \ first row second row\ 

      \ \ \ \ \ \ \ \ \ 3 \ \ \ \ \ \ \ \ \ 4\ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Row names are especially important when we want to use data from different
  sources: for example when we have results of one experiment for some genes,
  and more results of from a second experiment. The row names allow us then
  to quickly connect the results for the same genes.

  <subsection|What is the difference between matrices and data.frames?>

  A matrix basically is a vector, and as such can hold only one type of data.
  This can cause strange results sometime:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x=matrix(1:6,2,3)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      \ \ \ \ \ [,1] [,2] [,3]

      [1,] \ \ \ 1 \ \ \ 3 \ \ \ 5

      [2,] \ \ \ 2 \ \ \ 4 \ \ \ 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[2,2]="four"
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      \ \ \ \ \ [,1] [,2] \ \ [,3]

      [1,] "1" \ "3" \ \ \ "5"\ 

      [2,] "2" \ "four" "6"\ 
    </output>

    \;
  </session>>

  by changing a single entry in x, the whole matrix was changed to strings.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x=data.frame(a=1:3,b=4:6)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      \ \ a b

      1 1 4

      2 2 5

      3 3 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[2,2]
    </input>

    <\output>
      [1] 5
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[2,2]="five"
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      \ \ a \ \ \ b

      1 1 \ \ \ 4

      2 2 five

      3 3 \ \ \ 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[,2]
    </input>

    <\output>
      [1] "4" \ \ \ "five" "6" \ \ 
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[,1]
    </input>

    <\output>
      [1] 1 2 3
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  You can see that only one column of x was changed to strings. A data.frame
  is a list of vectors (or matrices), all of which have the same length, and
  can thus be addressed as an array.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[1]
    </input>

    <\output>
      \ \ a

      1 1

      2 2

      3 3
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x[2]
    </input>

    <\output>
      \ \ \ \ \ b

      1 \ \ \ 4

      2 five

      3 \ \ \ 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  <subsection|Functions>

  Last time we talked a bit about functions. Now some more.

  Let us define a simple function:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f=function(x) x+1
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f(4)
    </input>

    <\output>
      [1] 5
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f(9.3)
    </input>

    <\output>
      [1] 10.3
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x=17
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f(2)
    </input>

    <\output>
      [1] 3
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      [1] 17
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  So, a function is very easy to define: We just say

  <verbatim|function(x)> followed by an expression.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      square= function(z) z^2
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      square(3)
    </input>

    <\output>
      [1] 9
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      square(1:5)
    </input>

    <\output>
      [1] \ 1 \ 4 \ 9 16 25
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      square
    </input>

    <\output>
      function(z) z^2
    </output>
  </session>>

  We can see that functions can simply be stored in variables, like numbers
  or strings.

  Functions can also take several arguments:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      mult = function(x,y) x*y
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      mult(2,3)
    </input>

    <\output>
      [1] 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      mult(1:4,2:5)
    </input>

    <\output>
      [1] \ 2 \ 6 12 20
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Applying a function to a vector

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=1:10
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f=function(x) x+1
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      sapply(a,f)
    </input>

    <\output>
      \ [1] \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9 10 11
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  <verbatim|sapply()> applies the function to each element in the vector, and
  returns the result.

  If the result is a vector, then we get a matrix:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      g=function(x) c(x,x+1)
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      g(2)
    </input>

    <\output>
      [1] 2 3
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      g(5)
    </input>

    <\output>
      [1] 5 6
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      sapply(1:4,g)
    </input>

    <\output>
      \ \ \ \ \ [,1] [,2] [,3] [,4]

      [1,] \ \ \ 1 \ \ \ 2 \ \ \ 3 \ \ \ 4

      [2,] \ \ \ 2 \ \ \ 3 \ \ \ 4 \ \ \ 5
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Sometimes we need more than one expression for the calculation. In that
  case we can enclose the calculations with <verbatim|{}>. The result will be
  the last expression.

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      die.roll.6=function(){ x=sample(1:6,1); x==6 }
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      die.roll.6()
    </input>

    <\output>
      [1] FALSE
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  Assignments in functions do not affect the outside:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x=100
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      die.roll.6()
    </input>

    <\output>
      [1] FALSE
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      x
    </input>

    <\output>
      [1] 100
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  To see what is happenening in a function, we can add print statements:

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      die.roll.6=function(){ x=sample(1:6,1); print(x); x==6 }
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      die.roll.6()
    </input>

    <\output>
      [1] 2

      [1] FALSE
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  R also has conditional statements, and loops:

  <subsection|Conditionals>

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f = function(x) { if( x \<gtr\> 3) 4 else 5}
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f(2)
    </input>

    <\output>
      [1] 5
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      f(6)
    </input>

    <\output>
      [1] 4
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      \;
    </input>
  </session>>

  <subsection|Loops>

  <with|prog-language|r|prog-session|default|<\session>
    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      for(i in 1:10) print(i)
    </input>

    <\output>
      [1] 1

      [1] 2

      [1] 3

      [1] 4

      [1] 5

      [1] 6

      [1] 7

      [1] 8

      [1] 9

      [1] 10
    </output>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a=1
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      for(i in 1:10) a = a * i
    </input>

    <\input|<with|color|red|\<gtr\> <with|color|black|>>>
      a
    </input>

    <\output>
      [1] 3628800
    </output>

    \;
  </session>>

  <verbatim|for> has the following structure: you give a variable that will
  iterate over a vector or list of things.\ 

  The expression will be called with each i.

  \;

  \;
</body>

<\initial>
  <\collection>
    <associate|page-even|30mm>
    <associate|page-reduce-bot|15mm>
    <associate|page-reduce-right|25mm>
    <associate|page-reduce-left|25mm>
    <associate|page-top|30mm>
    <associate|page-right|30mm>
    <associate|par-width|150mm>
    <associate|page-odd|30mm>
    <associate|page-bot|30mm>
    <associate|page-reduce-top|15mm>
  </collection>
</initial>

<\references>
  <\collection>
    <associate|toc-5|<tuple|<uninit>|?>>
    <associate|toc-6|<tuple|<uninit>|?>>
    <associate|toc-7|<tuple|<uninit>|?>>
    <associate|toc-8|<tuple|<uninit>|?>>
    <associate|toc-1|<tuple|<uninit>|?>>
    <associate|toc-2|<tuple|<uninit>|?>>
    <associate|toc-3|<tuple|<uninit>|?>>
    <associate|toc-4|<tuple|<uninit>|?>>
  </collection>
</references>

<\auxiliary>
  <\collection>
    <\associate|toc>
      Lecture 3<value|toc-dots><pageref|toc-1>

      <with|par-left|<quote|1.5fn>|read.table<value|toc-dots><pageref|toc-2>>

      <with|par-left|<quote|1.5fn>|names<value|toc-dots><pageref|toc-3>>

      <with|par-left|<quote|1.5fn>|What is the difference between matrices
      and data.frames?<value|toc-dots><pageref|toc-4>>

      <with|par-left|<quote|1.5fn>|Functions<value|toc-dots><pageref|toc-5>>

      <with|par-left|<quote|1.5fn>|Conditionals<value|toc-dots><pageref|toc-6>>

      <with|par-left|<quote|1.5fn>|Loops<value|toc-dots><pageref|toc-7>>
    </associate>
  </collection>
</auxiliary>
