-
Notifications
You must be signed in to change notification settings - Fork 315
/
faq.html
2447 lines (2001 loc) · 109 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<html lang="en"><head>
<title>R FAQ</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name=description content="R FAQ">
<meta name=generator content="makeinfo 4.0">
<link href="http://texinfo.org/" rel=generator-home>
</head><body>
<html>
<head>
<TITLE>R FAQ</TITLE>
</head>
<body>
<h1>R FAQ</h1>
<h2>Frequently Asked Questions on R</h2>
<h2>Version 0.65-12, 1999/11/15</h2>
<address>Kurt Hornik</address>
<p><p><hr><p>
<h1>Table of Contents</h1>
<ul>
<li><a href="#Introduction">1 Introduction</a>
<ul>
<li><a href="#Legalese">1.1 Legalese</a>
<li><a href="#Obtaining%20this%20document">1.2 Obtaining this document</a>
<li><a href="#Citing%20this%20document">1.3 Citing this document</a>
<li><a href="#Notation">1.4 Notation</a>
<li><a href="#Feedback">1.5 Feedback</a>
</ul>
<li><a href="#R%20Basics">2 R Basics</a>
<ul>
<li><a href="#What%20is%20R%3f">2.1 What is R?</a>
<li><a href="#What%20machines%20does%20R%20run%20on%3f">2.2 What machines does R run on?</a>
<li><a href="#What%20is%20the%20current%20version%20of%20R%3f">2.3 What is the current version of R?</a>
<li><a href="#How%20can%20R%20be%20obtained%3f">2.4 How can R be obtained?</a>
<li><a href="#How%20can%20R%20be%20installed%3f">2.5 How can R be installed?</a>
<ul>
<li><a href="#How%20can%20R%20be%20installed%20(Unix)">2.5.1 How can R be installed (Unix)</a>
<li><a href="#How%20can%20R%20be%20installed%20(Windows)">2.5.2 How can R be installed (Windows)</a>
<li><a href="#How%20can%20R%20be%20installed%20(Macintosh)">2.5.3 How can R be installed (Macintosh)</a>
</ul>
<li><a href="#Are%20there%20Unix%20binaries%20for%20R%3f">2.6 Are there Unix binaries for R?</a>
<li><a href="#What%20documentation%20exists%20for%20R%3f">2.7 What documentation exists for R?</a>
<li><a href="#Citing%20R">2.8 Citing R</a>
<li><a href="#What%20mailing%20lists%20exist%20for%20R%3f">2.9 What mailing lists exist for R?</a>
<li><a href="#What%20is%20CRAN%3f">2.10 What is CRAN?</a>
</ul>
<li><a href="#R%20and%20S">3 R and S</a>
<ul>
<li><a href="#What%20is%20S%3f">3.1 What is S?</a>
<li><a href="#What%20is%20S-PLUS%3f">3.2 What is S-PLUS?</a>
<li><a href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">3.3 What are the differences between R and S?</a>
<ul>
<li><a href="#Lexical%20scoping">3.3.1 Lexical scoping</a>
<li><a href="#Models">3.3.2 Models</a>
<li><a href="#Others">3.3.3 Others</a>
</ul>
<li><a href="#Is%20there%20anything%20R%20can%20do%20that%20S-PLUS%20cannot%3f">3.4 Is there anything R can do that S-PLUS cannot?</a>
</ul>
<li><a href="#R%20Web%20Interfaces">4 R Web Interfaces</a>
<li><a href="#R%20Add-On%20Packages">5 R Add-On Packages</a>
<ul>
<li><a href="#Which%20add-on%20packages%20exist%20for%20R%3f">5.1 Which add-on packages exist for R?</a>
<li><a href="#How%20can%20add-on%20packages%20be%20installed%3f">5.2 How can add-on packages be installed?</a>
<li><a href="#How%20can%20add-on%20packages%20be%20used%3f">5.3 How can add-on packages be used?</a>
<li><a href="#How%20can%20add-on%20packages%20be%20removed%3f">5.4 How can add-on packages be removed?</a>
<li><a href="#How%20can%20I%20create%20an%20R%20package%3f">5.5 How can I create an R package?</a>
<li><a href="#How%20can%20I%20contribute%20to%20R%3f">5.6 How can I contribute to R?</a>
</ul>
<li><a href="#R%20and%20Emacs">6 R and Emacs</a>
<ul>
<li><a href="#Is%20there%20Emacs%20support%20for%20R%3f">6.1 Is there Emacs support for R?</a>
<li><a href="#Should%20I%20run%20R%20from%20within%20Emacs%3f">6.2 Should I run R from within Emacs?</a>
</ul>
<li><a href="#R%20Miscellania">7 R Miscellania</a>
<ul>
<li><a href="#Why%20does%20R%20run%20out%20of%20memory%3f">7.1 Why does R run out of memory?</a>
<li><a href="#Why%20does%20sourcing%20a%20correct%20file%20fail%3f">7.2 Why does sourcing a correct file fail?</a>
<li><a href="#How%20can%20I%20set%20components%20of%20a%20list%20to%20NULL%3f">7.3 How can I set components of a list to NULL?</a>
<li><a href="#How%20can%20I%20save%20my%20workspace%3f">7.4 How can I save my workspace?</a>
<li><a href="#How%20can%20I%20clean%20up%20my%20workspace%3f">7.5 How can I clean up my workspace?</a>
<li><a href="#How%20can%20I%20get%20eval()%20and%20D()%20to%20work%3f">7.6 How can I get eval() and D() to work?</a>
<li><a href="#Why%20do%20my%20matrices%20lose%20dimensions%3f">7.7 Why do my matrices lose dimensions?</a>
<li><a href="#How%20does%20autoloading%20work%3f">7.8 How does autoloading work?</a>
<li><a href="#How%20should%20I%20set%20options%3f">7.9 How should I set options?</a>
<li><a href="#How%20do%20file%20names%20work%20in%20Windows%3f">7.10 How do file names work in Windows?</a>
<li><a href="#Why%20does%20plotting%20give%20a%20color%20allocation%20error%3f">7.11 Why does plotting give a color allocation error?</a>
<li><a href="#Is%20R%20Y2K-compliant%3f">7.12 Is R Y2K-compliant?</a>
</ul>
<li><a href="#R%20Programming">8 R Programming</a>
<ul>
<li><a href="#How%20should%20I%20write%20summary%20methods%3f">8.1 How should I write summary methods?</a>
<li><a href="#How%20can%20I%20debug%20dynamically%20loaded%20code%3f">8.2 How can I debug dynamically loaded code?</a>
<li><a href="#How%20can%20I%20inspect%20R%20objects%20when%20debugging%3f">8.3 How can I inspect R objects when debugging?</a>
</ul>
<li><a href="#R%20Bugs">9 R Bugs</a>
<ul>
<li><a href="#What%20is%20a%20bug%3f">9.1 What is a bug?</a>
<li><a href="#How%20to%20report%20a%20bug">9.2 How to report a bug</a>
</ul>
<li><a href="#Acknowledgments">10 Acknowledgments</a>
</ul>
<p><hr>
Node:<a name="Top">Top</a>,
Next:<a rel=next href="#Introduction">Introduction</a>,
Previous:<a rel=previous href="#(dir)">(dir)</a>,
Up:<a rel=up href="#(dir)">(dir)</a>
<br>
<ul>
<li><a href="#Introduction">Introduction</a>:
<li><a href="#R%20Basics">R Basics</a>:
<li><a href="#R%20and%20S">R and S</a>:
<li><a href="#R%20Web%20Interfaces">R Web Interfaces</a>:
<li><a href="#R%20Add-On%20Packages">R Add-On Packages</a>:
<li><a href="#R%20and%20Emacs">R and Emacs</a>:
<li><a href="#R%20Miscellania">R Miscellania</a>:
<li><a href="#R%20Programming">R Programming</a>:
<li><a href="#R%20Bugs">R Bugs</a>:
<li><a href="#Acknowledgments">Acknowledgments</a>:
</ul>
<p><hr>
Node:<a name="Introduction">Introduction</a>,
Next:<a rel=next href="#R%20Basics">R Basics</a>,
Previous:<a rel=previous href="#Top">Top</a>,
Up:<a rel=up href="#Top">Top</a>
<br>
<h1>1 Introduction</h1>
<p>This document contains answers to some of the most frequently asked
questions about R.
<ul>
<li><a href="#Legalese">Legalese</a>:
<li><a href="#Obtaining%20this%20document">Obtaining this document</a>:
<li><a href="#Citing%20this%20document">Citing this document</a>:
<li><a href="#Notation">Notation</a>:
<li><a href="#Feedback">Feedback</a>:
</ul>
<p><hr>
Node:<a name="Legalese">Legalese</a>,
Next:<a rel=next href="#Obtaining%20this%20document">Obtaining this document</a>,
Previous:<a rel=previous href="#Introduction">Introduction</a>,
Up:<a rel=up href="#Introduction">Introduction</a>
<br>
<h2>1.1 Legalese</h2>
<p>This document is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
<p>This document is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
<p>A copy of the GNU General Public License is available via WWW at
<pre><a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>.
</pre>
<p>You can also obtain it by writing to the Free Software Foundation, Inc.,
59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA.
<p><hr>
Node:<a name="Obtaining%20this%20document">Obtaining this document</a>,
Next:<a rel=next href="#Citing%20this%20document">Citing this document</a>,
Previous:<a rel=previous href="#Legalese">Legalese</a>,
Up:<a rel=up href="#Introduction">Introduction</a>
<br>
<h2>1.2 Obtaining this document</h2>
<p>The latest version of this document is always available from
<pre><a href="http://www.ci.tuwien.ac.at/~hornik/R/">http://www.ci.tuwien.ac.at/~hornik/R/</a>
</pre>
<p>From there, you can obtain versions converted to
<a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.txt">plain ASCII text</a>, <a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.dvi.gz">DVI</a>,
<a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.info.gz">GNU info</a>,
<a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html">HTML</a>,
<a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.pdf">PDF</a>,
<a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.ps.gz">PostScript</a> as
well as the <a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.texi">Texinfo source</a> used for creating all these formats using the
<a href="http://texinfo.org/">GNU Texinfo system</a>.
<p>You can also obtain the R FAQ from the <code>doc/FAQ</code> subdirectory of a
CRAN site (<a href="#What%20is%20CRAN%3f">What is CRAN?</a>).
<p><hr>
Node:<a name="Citing%20this%20document">Citing this document</a>,
Next:<a rel=next href="#Notation">Notation</a>,
Previous:<a rel=previous href="#Obtaining%20this%20document">Obtaining this document</a>,
Up:<a rel=up href="#Introduction">Introduction</a>
<br>
<h2>1.3 Citing this document</h2>
<p>In publications, please refer to this FAQ as Hornik (1999), "The R
FAQ" and give the above, <em>official</em> URL.
<p><hr>
Node:<a name="Notation">Notation</a>,
Next:<a rel=next href="#Feedback">Feedback</a>,
Previous:<a rel=previous href="#Citing%20this%20document">Citing this document</a>,
Up:<a rel=up href="#Introduction">Introduction</a>
<br>
<h2>1.4 Notation</h2>
<p>Everything should be pretty standard. <code>R></code> is used for the R
prompt, and a <code>$</code> for the shell prompt (where applicable).
<p><hr>
Node:<a name="Feedback">Feedback</a>,
Previous:<a rel=previous href="#Notation">Notation</a>,
Up:<a rel=up href="#Introduction">Introduction</a>
<br>
<h2>1.5 Feedback</h2>
<p>Feedback is of course most welcome.
<p>In particular, note that I do not have access to Windows or Mac systems.
Features specific to the Windows port of R are described in the
<a href="http://www.stats.ox.ac.uk/pub/R/rw-FAQ.html">"Frequently Asked Questions for R for Windows"</a>. If you have information on Windows or
Mac systems that you think should be added to this document, please let
me know.
<p><hr>
Node:<a name="R%20Basics">R Basics</a>,
Next:<a rel=next href="#R%20and%20S">R and S</a>,
Previous:<a rel=previous href="#Introduction">Introduction</a>,
Up:<a rel=up href="#Top">Top</a>
<br>
<h1>2 R Basics</h1>
<ul>
<li><a href="#What%20is%20R%3f">What is R?</a>:
<li><a href="#What%20machines%20does%20R%20run%20on%3f">What machines does R run on?</a>:
<li><a href="#What%20is%20the%20current%20version%20of%20R%3f">What is the current version of R?</a>:
<li><a href="#How%20can%20R%20be%20obtained%3f">How can R be obtained?</a>:
<li><a href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>:
<li><a href="#Are%20there%20Unix%20binaries%20for%20R%3f">Are there Unix binaries for R?</a>:
<li><a href="#What%20documentation%20exists%20for%20R%3f">What documentation exists for R?</a>:
<li><a href="#Citing%20R">Citing R</a>:
<li><a href="#What%20mailing%20lists%20exist%20for%20R%3f">What mailing lists exist for R?</a>:
<li><a href="#What%20is%20CRAN%3f">What is CRAN?</a>:
</ul>
<p><hr>
Node:<a name="What%20is%20R%3f">What is R?</a>,
Next:<a rel=next href="#What%20machines%20does%20R%20run%20on%3f">What machines does R run on?</a>,
Previous:<a rel=previous href="#R%20Basics">R Basics</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.1 What is R?</h2>
<p>R is a system for statistical computation and graphics. It consists of
a language plus a run-time environment with graphics, a debugger, access
to certain system functions, and the ability to run programs stored in
script files.
<p>The design of R has been heavily influenced by two existing languages:
Becker, Chambers & Wilks' S (see <a href="#What%20is%20S%3f">What is S?</a>) and Sussman's
<a href="http://www.cs.indiana.edu/scheme-repository/home.html">Scheme</a>.
Whereas the resulting language is very similar in appearance to S, the
underlying implementation and semantics are derived from Scheme.
See <a href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>, for a discussion of
the differences between R and S.
<p>R was initially written by <a href="mailto:Ross.Ihaka@r-project.org">Ross Ihaka</a>
and <a href="mailto:Robert.Gentleman@r-project.org">Robert Gentleman</a>, who are
Senior Lecturers at the Department of Statistics of the University of
Auckland in Auckland, New Zealand. In addition, a large group of
individuals has contributed to R by sending code and bug reports.
<p>Since mid-1997 there has been a core group (the "R Core Team") who can
modify the R source code CVS archive. The group currently consists of
Doug Bates, Peter Dalgaard, Robert Gentleman, Kurt Hornik, Ross Ihaka,
Friedrich Leisch, Thomas Lumley, Martin Maechler, Guido Masarotto, Paul
Murrell, Brian Ripley, Duncan Temple Lang, and Luke Tierney.
<p>R has a home page at <a href="http://stat.auckland.ac.nz/r/r.html">http://stat.auckland.ac.nz/r/r.html</a>. It is
free software distributed under a GNU-style copyleft, and an official
part of the GNU project ("GNU S").
<p><hr>
Node:<a name="What%20machines%20does%20R%20run%20on%3f">What machines does R run on?</a>,
Next:<a rel=next href="#What%20is%20the%20current%20version%20of%20R%3f">What is the current version of R?</a>,
Previous:<a rel=previous href="#What%20is%20R%3f">What is R?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.2 What machines does R run on?</h2>
<p>R is being developed for the Unix, Windows and Mac families of operating
systems.
<p>The current version of R will configure and build under a number of
common Unix platforms including i386-freebsd, i386-linux, ppc-linux,
mips-sgi-irix, alpha-linux, alpha-dec-osf4, rs6000-ibm-aix,
hppa-hp-hpux, sparc-linux, and sparc-sun-solaris, see the file
<code>PLATFORMS</code> in the R distribution for more information.
<p>If you know about other platforms, please drop us a note.
<p><hr>
Node:<a name="What%20is%20the%20current%20version%20of%20R%3f">What is the current version of R?</a>,
Next:<a rel=next href="#How%20can%20R%20be%20obtained%3f">How can R be obtained?</a>,
Previous:<a rel=previous href="#What%20machines%20does%20R%20run%20on%3f">What machines does R run on?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.3 What is the current version of R?</h2>
<p>The current stable Unix/Windows version is 0.65.1, the
unstable one is 0.90.0. Typically, new features are
introduced in the development versions; updates of stable versions are
for bug fixes mostly. The version for the Mac is pre-alpha.
<p><hr>
Node:<a name="How%20can%20R%20be%20obtained%3f">How can R be obtained?</a>,
Next:<a rel=next href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>,
Previous:<a rel=previous href="#What%20is%20the%20current%20version%20of%20R%3f">What is the current version of R?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.4 How can R be obtained?</h2>
<p>Sources, binaries and documentation for R can be obtained via CRAN, the
"Comprehensive R Archive Network" (see <a href="#What%20is%20CRAN%3f">What is CRAN?</a>).
<p><hr>
Node:<a name="How%20can%20R%20be%20installed%3f">How can R be installed?</a>,
Next:<a rel=next href="#Are%20there%20Unix%20binaries%20for%20R%3f">Are there Unix binaries for R?</a>,
Previous:<a rel=previous href="#How%20can%20R%20be%20obtained%3f">How can R be obtained?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.5 How can R be installed?</h2>
<ul>
<li><a href="#How%20can%20R%20be%20installed%20(Unix)">How can R be installed (Unix)</a>:
<li><a href="#How%20can%20R%20be%20installed%20(Windows)">How can R be installed (Windows)</a>:
<li><a href="#How%20can%20R%20be%20installed%20(Macintosh)">How can R be installed (Macintosh)</a>:
</ul>
<p><hr>
Node:<a name="How%20can%20R%20be%20installed%20(Unix)">How can R be installed (Unix)</a>,
Next:<a rel=next href="#How%20can%20R%20be%20installed%20(Windows)">How can R be installed (Windows)</a>,
Previous:<a rel=previous href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>,
Up:<a rel=up href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>
<br>
<h3>2.5.1 How can R be installed (Unix)</h3>
<p>If binaries are available for your platform (see <a href="#Are%20there%20Unix%20binaries%20for%20R%3f">Are there Unix binaries for R?</a>), you can use these, following the instructions that
come with them.
<p>Otherwise, you can compile and install R yourself, which can be done
very easily under a number of common Unix platforms (see <a href="#What%20machines%20does%20R%20run%20on%3f">What machines does R run on?</a>). The file <code>INSTALL</code> that comes with the
R distribution contains instructions.
<p>Note that you need a FORTRAN compiler or <code>f2c</code> in addition to a C
compiler to build R. Also, you need Perl version 5 to build the
documentation. If this is not available on your system, you can obtain
precompiled documentation files via CRAN.
<p>In the simplest case, untar the R source code, cd to the directory thus
created, and issue the following commands (at the shell prompt):
<pre>$ ./configure
$ make
</pre>
<p>If these commands execute successfully, the R binary and a shell script
font-end called <code>R</code> are created and copied to the <code>bin</code>
directory. You can copy the script to a place where users can invoke
it, for example to <code>/usr/local/bin</code>. In addition, plain text help
pages as well as HTML and LaTeX versions of the documentation are
built.
<p>Use <kbd>make dvi</kbd> to obtain a dvi version of the R manual. This
creates the files <code>Manual.dvi</code> (a start of a manual) and
<code>Reference.dvi</code> (an R object reference index) in the
<code>doc/manual</code> subdirectory. These files can be previewed and
printed using standard programs such as <code>xdvi</code> and <code>dvips</code>.
(Note that they have to be built in the source tree.)
<p>Finally, use <kbd>make check</kbd> to find out whether your R system works
correctly.
<p>You can also perform a "system-wide" installation using <kbd>make
install</kbd>. By default, this will install to the following directories:
<dl>
<dt><code>${prefix}/bin</code>
<dd>(some) executables
<br><dt><code>${prefix}/man/man1</code>
<dd>man pages
<br><dt><code>${prefix}/share/R</code>
<dd>all the rest (libraries, on-line help system, <small>...</small>). This is the "R
Home Directory" (<code>R_HOME</code>) of the installed system.
</dl>
<p>In the above, <code>prefix</code> is determined during configuration
(typically <code>/usr/local</code>) and can be set by running <code>configure</code>
with the option
<pre>$ ./configure --prefix=/where/you/want/R/to/go
</pre>
<p>(E.g., the R executable will then be installed into
<code>/where/you/want/R/to/go/bin</code>.)
<p><hr>
Node:<a name="How%20can%20R%20be%20installed%20(Windows)">How can R be installed (Windows)</a>,
Next:<a rel=next href="#How%20can%20R%20be%20installed%20(Macintosh)">How can R be installed (Macintosh)</a>,
Previous:<a rel=previous href="#How%20can%20R%20be%20installed%20(Unix)">How can R be installed (Unix)</a>,
Up:<a rel=up href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>
<br>
<h3>2.5.2 How can R be installed (Windows)</h3>
<p>The <code>bin/windows/windows-NT</code> directory of a CRAN site contains the
latest binary distributions of R for 32 bit versions of MS Windows
(i.e., 95, 98 or NT), as well as binary distributions for a large number
of add-on packages from CRAN. The Windows version of R was created by
Robert Gentleman, and is now being developed and maintained by
<a href="mailto:Guido.Masarotto@r-project.org">Guido Masarotto</a> and
<a href="mailto:Brian.Ripley@r-project.org">Brian D. Ripley</a>.
<p>For most installations the installer <code>rwinst.exe</code> will be the
easiest tool to use.
<p>See the <a href="http://www.stats.ox.ac.uk/pub/R/rw-FAQ.html">R Windows FAQ</a> for more details.
<p><hr>
Node:<a name="How%20can%20R%20be%20installed%20(Macintosh)">How can R be installed (Macintosh)</a>,
Previous:<a rel=previous href="#How%20can%20R%20be%20installed%20(Windows)">How can R be installed (Windows)</a>,
Up:<a rel=up href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>
<br>
<h3>2.5.3 How can R be installed (Macintosh)</h3>
<p>The Power Macintosh port is temporarily on hold, and currently no binary
distribution is available. We hope that this will change soon.
<p><hr>
Node:<a name="Are%20there%20Unix%20binaries%20for%20R%3f">Are there Unix binaries for R?</a>,
Next:<a rel=next href="#What%20documentation%20exists%20for%20R%3f">What documentation exists for R?</a>,
Previous:<a rel=previous href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.6 Are there Unix binaries for R?</h2>
<p>The <code>bin/linux</code> directory contains Debian 2.1 packages for the i386
platform (now part of the Debian distribution and maintained by Doug
Bates) as well as Red Hat 5.1 packages for the alpha and sparc platforms
(maintained by Nassib Nasser and Vin Everett, respectively), Red Hat 6.0
packages for the i386 and alpha platforms (maintained by Martyn Plummer
and Naoki Takebayashi, respectively), S.u.S.E. 5.3/6.0/6.2 i386 packages
by Albrecht Gebhardt, and RPMs for the ppc platform by Alex Buerkle.
<p>The <code>bin/osf</code> directory contains RPMs for alpha systems running
Digital Unix 4.0 by Albrecht Gebhardt.
<p>No other binary distributions have thus far been made publically
available.
<p><hr>
Node:<a name="What%20documentation%20exists%20for%20R%3f">What documentation exists for R?</a>,
Next:<a rel=next href="#Citing%20R">Citing R</a>,
Previous:<a rel=previous href="#Are%20there%20Unix%20binaries%20for%20R%3f">Are there Unix binaries for R?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.7 What documentation exists for R?</h2>
<p>Online documentation for most of the functions and variables in R
exists, and can be printed on-screen by typing <kbd>help(<var>name</var>)</kbd>
(or <kbd>?<var>name</var></kbd>) at the R prompt, where <var>name</var> is the name of
the topic help is sought for. (In the case of unary and binary
operators and control-flow special forms, the name may need to be be
quoted.)
<p>This documentation can also be made available as HTML, and as hardcopy
via LaTeX, see <a href="#How%20can%20R%20be%20installed%3f">How can R be installed?</a>. An up-to-date HTML
version is always available for web browsing at
<a href="http://stat.ethz.ch/R/manual/">http://stat.ethz.ch/R/manual/</a>.
<p>An earlier attempt at an R manual ("Notes on R: A Programming
Environment for Data Analysis and Graphics"), based on the "Notes on
S-PLUS" by <a href="mailto:venables@stats.adelaide.edu.au">Bill Venables</a> and
<a href="mailto:D.M.Smith@lancaster.ac.uk">David Smith</a>, can be obtained as
<code>Rnotes.tgz</code> (LaTeX source) in a CRAN <code>doc</code> directory.
Further documentation on R and the R API are currently being written.
<p>In the absence of an R manual, documentation for S/S-PLUS (see <a href="#R%20and%20S">R and S</a>) can be used in combination with this FAQ (see <a href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>). We recommend
<blockquote>
W. N. Venables and B. D. Ripley (1999), "Modern Applied Statistics with
S-PLUS. Third Edition". Springer, ISBN 0-387-98825-4.
</blockquote>
<p>which has a home page at <a href="http://www.stats.ox.ac.uk/pub/MASS3/">http://www.stats.ox.ac.uk/pub/MASS3/</a>
providing additional material, in particular "R Complements" which
describe how to use the book with R. These complements provide both
descriptions of some of the differences between R and S-PLUS, and the
modifications needed to run the examples in the book. Its companion
volume on "S Programming", due in about April 2000, will provide an
in-depth guide to writing software in the S language which forms the
basis of both the commercial S-PLUS and the Open Source R data analysis
software systems.
<p>More introductory books are
<blockquote>
P. Spector (1994), "An introduction to S and S-PLUS", Duxbury Press.
<p>A. Krause and M. Olsen (1997), "The Basics of S and S-PLUS", Springer.
</blockquote>
<p>Last, but not least, Ross' and Robert's experience in designing and
implementing R is described in:
<pre>@article{,
author = {Ross Ihaka and Robert Gentleman},
title = {R: A Language for Data Analysis and Graphics},
journal = {Journal of Computational and Graphical Statistics},
year = 1996,
volume = 5,
number = 3,
pages = {299--314}
}
</pre>
<p><hr>
Node:<a name="Citing%20R">Citing R</a>,
Next:<a rel=next href="#What%20mailing%20lists%20exist%20for%20R%3f">What mailing lists exist for R?</a>,
Previous:<a rel=previous href="#What%20documentation%20exists%20for%20R%3f">What documentation exists for R?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.8 Citing R</h2>
<p>To cite R in publications, use the above Ihaka & Gentleman (1996), "R:
A Language for Data Analysis and Graphics", <em>Journal of
Computational and Graphical Statistics</em>, <strong>5</strong>, 299-314.
<p><hr>
Node:<a name="What%20mailing%20lists%20exist%20for%20R%3f">What mailing lists exist for R?</a>,
Next:<a rel=next href="#What%20is%20CRAN%3f">What is CRAN?</a>,
Previous:<a rel=previous href="#Citing%20R">Citing R</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.9 What mailing lists exist for R?</h2>
<p>Thanks to <a href="mailto:Martin.Maechler@r-project.org">Martin Maechler</a>, there
are three mailing lists devoted to R.
<dl>
<dt><code>r-announce</code>
<dd>This list is for announcements about the development of R and the
availability of new code.
<br><dt><code>r-devel</code>
<dd>This list is for discussions about the future of R and pre-testing of
new versions. It is meant for those who maintain an active position in
the development of R.
<br><dt><code>r-help</code>
<dd>The `main' R mailing list, for announcements about the development of R
and the availability of new code, questions and answers about problems
and solutions using R, enhancements and patches to the source code and
documentation of R, comparison and compatibility with S and S-PLUS, and
for the posting of nice examples and benchmarks.
</dl>
<p>Note that the r-announce list is gatewayed into r-help, so you don't
need to subscribe to both of them.
<p>Send email to <a href="mailto:r-help@lists.r-project.org">r-help@lists.r-project.org</a> to reach everyone on
the r-help mailing list. To subscribe (or unsubscribe) to this list
send <code>subscribe</code> (or <code>unsubscribe</code>) in the BODY of the message
(not in the subject!) to <a href="mailto:r-help-request@lists.r-project.org">r-help-request@lists.r-project.org</a>.
Information about the list can be obtained by sending an email with
<code>info</code> as its contents to
<a href="mailto:r-help-request@lists.r-project.org">r-help-request@lists.r-project.org</a>.
<p>Subscription and posting to the other lists is done analogously, with
`r-help' replaced by `r-announce' and `r-devel', respectively.
<p>It is recommended that you send mail to r-help rather than only to the R
developers (who are also subscribed to the list, of course). This may
save them precious time they can use for constantly improving R, and
will typically also result in much quicker feedback for yourself.
<p>Of course, in the case of bug reports it would be very helpful to have
code which reliably reproduces the problem. Also, make sure that you
include information on the system and version of R being used. See
<a href="#R%20Bugs">R Bugs</a> for more details.
<p>Archives of the above three mailing lists are made available on the net
in a monthly schedule via the <code>doc/mail/mail.html</code> file in CRAN.
An HTML archive of the lists are available via
<a href="http://www.ens.gu.edu.au/robertk/R/">http://www.ens.gu.edu.au/robertk/R/</a>.
<p>The R Core Team can be reached at <a href="mailto:r-core@lists.r-project.org">r-core@lists.r-project.org</a>
for comments and reports.
<p><hr>
Node:<a name="What%20is%20CRAN%3f">What is CRAN?</a>,
Previous:<a rel=previous href="#What%20mailing%20lists%20exist%20for%20R%3f">What mailing lists exist for R?</a>,
Up:<a rel=up href="#R%20Basics">R Basics</a>
<br>
<h2>2.10 What is CRAN?</h2>
<p>The "Comprehensive R Archive Network" (CRAN) is a collection of sites
which carry identical material, consisting of the R distribution(s), the
contributed extensions, documentation for R, and binaries.
<p>The CRAN master site can be found at the URL
<blockquote>
<p><table><tr align="left"><td><a href="http://cran.r-project.org/">http://cran.r-project.org/</a>
<td>(Austria)
<br></tr></table>
</blockquote>
<p>(which is the same as <a href="http://cran.at.r-project.org/">http://cran.at.r-project.org/</a>) and is
currently being mirrored daily at
<blockquote>
<p><table><tr align="left"><td><a href="http://cran.dk.r-project.org/">http://cran.dk.r-project.org/</a>
<td>(Denmark)
<br></tr><tr align="left"><td><a href="http://cran.it.r-project.org/">http://cran.it.r-project.org/</a>
<td>(Italy)
<br></tr><tr align="left"><td><a href="http://cran.ch.r-project.org/">http://cran.ch.r-project.org/</a>
<td>(Switzerland)
<br></tr><tr align="left"><td><a href="http://cran.uk.r-project.org/">http://cran.uk.r-project.org/</a>
<td>(United Kingdom)
<br></tr><tr align="left"><td><a href="http://cran.us.r-project.org/">http://cran.us.r-project.org/</a>
<td>(USA/Wisconsin)
<br></tr></table>
</blockquote>
<p>Please use the CRAN site closest to you to reduce network load.
<p>From CRAN, you can obtain the latest official release of R, daily
snapshots of R (copies of the current CVS trees), as gzipped and bzipped
tar files or as two gzipped tar files (ready for 1.4M floppies), a
wealth of additional contributed code, as well as prebuilt binaries for
various operating systems (Linux, Nextstep, MacOS, MSWin) and
pre-formatted help pages. CRAN also provides access to documentation on
R, existing mailing lists and the R Bug Tracking system.
<p>To "submit" to CRAN, simply upload to
<a href="ftp://cran.r-project.org/incoming">ftp://cran.r-project.org/incoming</a> and send an email to
<a href="mailto:wwwadmin@cran.r-project.org">wwwadmin@cran.r-project.org</a>.
<blockquote>
<strong>Note:</strong> It is very important that you indicate the copyright
(license) information (GPL, BSD, Artistic, <small>...</small>) in your submission.
</blockquote>
<p>Please always use the URL of the master site when referring to CRAN.
<p><hr>
Node:<a name="R%20and%20S">R and S</a>,
Next:<a rel=next href="#R%20Web%20Interfaces">R Web Interfaces</a>,
Previous:<a rel=previous href="#R%20Basics">R Basics</a>,
Up:<a rel=up href="#Top">Top</a>
<br>
<h1>3 R and S</h1>
<ul>
<li><a href="#What%20is%20S%3f">What is S?</a>:
<li><a href="#What%20is%20S-PLUS%3f">What is S-PLUS?</a>:
<li><a href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>:
<li><a href="#Is%20there%20anything%20R%20can%20do%20that%20S-PLUS%20cannot%3f">Is there anything R can do that S-PLUS cannot?</a>:
</ul>
<p><hr>
Node:<a name="What%20is%20S%3f">What is S?</a>,
Next:<a rel=next href="#What%20is%20S-PLUS%3f">What is S-PLUS?</a>,
Previous:<a rel=previous href="#R%20and%20S">R and S</a>,
Up:<a rel=up href="#R%20and%20S">R and S</a>
<br>
<h2>3.1 What is S?</h2>
<p>S is a very high level language and an environment for data analysis and
graphics. S was written by Richard A. Becker, John M. Chambers, and
Allan R. Wilks of AT&T Bell Laboratories Statistics Research Department.
<p>The primary references for S are two books by the creators of S.
<ul>
<li>Richard A. Becker, John M. Chambers and Allan R. Wilks (1988), "The New
S Language," Chapman & Hall, London.
<p>This book is often called the "<em>Blue Book</em>".
</p><li>John M. Chambers and Trevor J. Hastie (1992), "Statistical Models in
S," Chapman & Hall, London.
<p>This is also called the "<em>White Book</em>".
</ul>
<p>Version 4 of S, a major revision of S designed by John Chambers to
improve its usefulness at every stage of the programming process, is
described in <a href="http://cm.bell-labs.com/cm/ms/departments/sia/Sbook/">"Programming with Data"</a> by John M. Chambers (1998), Springer: New
York, ISBN 0-387-98503-4.
<p>In 1998, the Association for Computing Machinery presented its Software
System Award to John Chambers for the design of the S system. The ACM
citation stated that "S has forever altered the way people analyze,
visualize, and manipulate data <small>...</small>. S is an elegant, widely
accepted, and enduring software system, with conceptual integrity,
thanks to the insight, taste, and effort of John Chambers." See
<a href="http://netlib.bell-labs.com/cm/ms/departments/sia/S/index.html">http://netlib.bell-labs.com/cm/ms/departments/sia/S/index.html</a>
for "Stages in the Evolution of S".
<p>There is a huge amount of user-contributed code for S, available at the
<a href="http://lib.stat.cmu.edu">S Repository</a> at CMU.
<p>The <a href="http://lib.stat.cmu.edu/S/faq">"Frequently Asked Questions about S"</a> contains further information about S, but is not up-to-date.
<p><hr>
Node:<a name="What%20is%20S-PLUS%3f">What is S-PLUS?</a>,
Next:<a rel=next href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>,
Previous:<a rel=previous href="#What%20is%20S%3f">What is S?</a>,
Up:<a rel=up href="#R%20and%20S">R and S</a>
<br>
<h2>3.2 What is S-PLUS?</h2>
<p>S-PLUS is a value-added version of S sold by Statistical Sciences,
Inc. (now a division of Mathsoft, Inc.). Based on the S language,
S-PLUS provides functionality in a wide variety of areas, including
robust regression, modern non-parametric regression, time series,
survival analysis, multivariate analysis, classical statistical tests,
quality control, and graphics drivers. Add-on modules add additional
capabilities for wavelet analysis, spatial statistics, GARCH models, and
design of experiments.
<p>See the <a href="http://www.mathsoft.com/splus/">MathSoft S-PLUS page</a> for
further information.
<p><hr>
Node:<a name="What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>,
Next:<a rel=next href="#Is%20there%20anything%20R%20can%20do%20that%20S-PLUS%20cannot%3f">Is there anything R can do that S-PLUS cannot?</a>,
Previous:<a rel=previous href="#What%20is%20S-PLUS%3f">What is S-PLUS?</a>,
Up:<a rel=up href="#R%20and%20S">R and S</a>
<br>
<h2>3.3 What are the differences between R and S?</h2>
<ul>
<li><a href="#Lexical%20scoping">Lexical scoping</a>:
<li><a href="#Models">Models</a>:
<li><a href="#Others">Others</a>:
</ul>
<p><hr>
Node:<a name="Lexical%20scoping">Lexical scoping</a>,
Next:<a rel=next href="#Models">Models</a>,
Previous:<a rel=previous href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>,
Up:<a rel=up href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>
<br>
<h3>3.3.1 Lexical scoping</h3>
<p>Whereas the developers of R have tried to stick to the S language as
defined in "The New S Language" (Blue Book, see <a href="#What%20is%20S%3f">What is S?</a>),
they have adopted the evaluation model of Scheme.
<p>This difference becomes manifest when <em>free</em> variables occur in a
function. Free variables are those which are neither formal parameters
(occurring in the argument list of the function) nor local variables
(created by assigning to them in the body of the function). Whereas S
(like C) by default uses <em>static</em> scoping, R (like Scheme) has
adopted <em>lexical</em> scoping. This means the values of free variables
are determined by a set of global variables in S, but in R by the
bindings that were in effect at the time the function was created.
<p>Consider the following function:
<pre>cube <- function(n) {
sq <- function() n * n
n * sq()
}
</pre>
<p>Under S, <code>sq()</code> does not "know" about the variable <code>n</code>
unless it is defined globally:
<pre>S> cube(2)
Error in sq(): Object "n" not found
Dumped
S> n <- 3
S> cube(2)
[1] 18
</pre>
<p>In R, the "environment" created when <code>cube()</code> was invoked is
also looked in:
<pre>R> cube(2)
[1] 8
</pre>
<p>As a more "interesting" real-world problem, suppose you want to write
a function which returns the density function of the r-th order
statistic from a sample of size n from a (continuous) distribution.
For simplicity, we shall use both the cdf and pdf of the distribution
as explicit arguments. (Example compiled from various postings by Luke
Tierney.)
<p>The S-PLUS documentation for <code>call()</code> basically suggests the
following:
<pre>dorder <- function(n, r, pfun, dfun) {
f <- function(x) NULL
con <- round(exp(lgamma(n + 1) - lgamma(r) - lgamma(n - r + 1)))
PF <- call(substitute(pfun), as.name("x"))
DF <- call(substitute(dfun), as.name("x"))
f[[length(f)]] <-
call("*", con,
call("*", call("^", PF, r - 1),
call("*", call("^", call("-", 1, PF), n - r),
DF)))
f
}
</pre>
<p>Rather tricky, isn't it? The code uses the fact that in S,
functions are just lists of special mode with the function body as the
last argument, and hence does not work in R (one could make the idea
work, though).
<p>A version which makes heavy use of <code>substitute()</code> and seems to work
under both S and R is
<pre>dorder <- function(n, r, pfun, dfun) {
con <- round(exp(lgamma(n + 1) - lgamma(r) - lgamma(n - r + 1)))
eval(substitute(function(x) K * PF(x)^a * (1 - PF(x))^b * DF(x),
list(PF = substitute(pfun), DF = substitute(dfun),
a = r - 1, b = n - r, K = con)))
}
</pre>
<p>(the <code>eval()</code> is not needed in S).
<p>However, in R there is a much easier solution:
<pre>dorder <- function(n, r, pfun, dfun) {
con <- round(exp(lgamma(n + 1) - lgamma(r) - lgamma(n - r + 1)))
function(x) {
con * pfun(x)^(r - 1) * (1 - pfun(x))^(n - r) * dfun(x)
}
}
</pre>
<p>This seems to be the "natural" implementation, and it works because
the free variables in the returned function can be looked up in the
defining environment (this is lexical scope).
<p>Note that what you really need is the function <em>closure</em>, i.e., the
body along with all variable bindings needed for evaluating it. Since
in the above version, the free variables in the value function are not
modified, you can actually use it in S as well if you abstract out the
closure operation into a function <code>MC()</code> (for "make closure"):
<pre>dorder <- function(n, r, pfun, dfun) {
con <- round(exp(lgamma(n + 1) - lgamma(r) - lgamma(n - r + 1)))
MC(function(x) {
con * pfun(x)^(r - 1) * (1 - pfun(x))^(n - r) * dfun(x)
},
list(con = con, pfun = pfun, dfun = dfun, r = r, n = n))
}
</pre>
<p>Given the appropriate definitions of the closure operator, this works in
both R and S, and is much "cleaner" than a substitute/eval solution
(or one which overrules the default scoping rules by using explicit
access to evaluation frames, as is of course possible in both R and S).
<p>For R, <code>MC()</code> simply is
<pre>MC <- function(f, env) f
</pre>
<p>(lexical scope!), a version for S is
<pre>MC <- function(f, env = NULL) {
env <- as.list(env)
if (mode(f) != "function")
stop(paste("not a function:", f))
if (length(env) > 0 && any(names(env) == ""))
stop(paste("not all arguments are named:", env))
fargs <- if(length(f) > 1) f[1:(length(f) - 1)] else NULL
fargs <- c(fargs, env)
if (any(duplicated(names(fargs))))
stop(paste("duplicated arguments:", paste(names(fargs)),
collapse = ", "))
fbody <- f[length(f)]
cf <- c(fargs, fbody)
mode(cf) <- "function"
return(cf)
}
</pre>
<p>Similarly, most optimization (or zero-finding) routines need some
arguments to be optimized over and have other parameters that depend on
the data but are fixed with respect to optimization. With R scoping
rules, this is a trivial problem; simply make up the function with the
required definitions in the same environment and scoping takes care of
it. With S, one solution is to add an extra parameter to the function
and to the optimizer to pass in these extras, which however can only
work if the optimizer supports this.
<p>Lexical scoping allows using function closures and maintaining local
state. A simple example (taken from Abelson and Sussman) is obtained by
typing <kbd>demo(scoping)</kbd> at the R prompt. Further information is
provided in the standard R reference "R: A Language for Data Analysis
and Graphics" (see <a href="#What%20documentation%20exists%20for%20R%3f">What documentation exists for R?</a>) and a paper on
"Lexical Scope and Statistical Computing" by Robert Gentleman and Ross
Ihaka which can be obtained from the <code>doc/misc</code> directory of a CRAN
site and will appear in the <em>Journal of Computational and Graphical
Statistics</em> around the beginning of 2000.
<p>Lexical scoping also implies a further major difference. Whereas S
stores all objects as separate files in a directory somewhere (usually
<code>.Data</code> under the current directory), R does not. All objects
in R are stored internally. When R is started up it grabs a very large
piece of memory and uses it to store the objects. R performs its own
memory management of this piece of memory. Having everything in memory
is necessary because it is not really possible to externally maintain
all relevant "environments" of symbol/value pairs. This difference
also seems to make R <em>faster</em> than S.
<p>The down side is that if R crashes you will lose all the work for the
current session. Saving and restoring the memory "images" (the
functions and data stored in R's internal memory at any time) can be a
bit slow, especially if they are big. In S this does not happen,
because everything is saved in disk files and if you crash nothing is
likely to happen to them. (In fact, one might conjecture that the S
developers felt that the price of changing their approach to persistent
storage just to accommodate lexical scope was far too expensive.) R is
still in a beta stage, and may crash from time to time. Hence, for
important work you should consider saving often (see <a href="#How%20can%20I%20save%20my%20workspace%3f">How can I save my workspace?</a>). Other possibilities are logging your sessions, or have
your R commands stored in text files which can be read in using
<code>source()</code>.
<blockquote>
<strong>Note:</strong> If you run R from within Emacs (see <a href="#R%20and%20Emacs">R and Emacs</a>),
you can save the contents of the interaction buffer to a file and
conveniently manipulate it using <code>ess-transcript-mode</code>, as well as
save source copies of all functions and data used.
</blockquote>
<p><hr>
Node:<a name="Models">Models</a>,
Next:<a rel=next href="#Others">Others</a>,
Previous:<a rel=previous href="#Lexical%20scoping">Lexical scoping</a>,
Up:<a rel=up href="#What%20are%20the%20differences%20between%20R%20and%20S%3f">What are the differences between R and S?</a>
<br>
<h3>3.3.2 Models</h3>
<p>There are some differences in the modeling code, such as
<ul>
<li>Whereas in S, you would use <code>lm(y ~ x^3)</code> to regress <code>y</code> on
<code>x^3</code>, in R, you have to insulate powers of numeric vectors (using
<code>I()</code>), i.e., you have to use <code>lm(y ~ I(x^3))</code>.
<li>The glm family objects are implemented differently in R and S. The same
functionality is available but the components have different names.
<li>Terms objects are stored differently. In S a terms object is an
expression with attributes, in R it is a formula with attributes. The
attributes have the same names but are mostly stored differently. The
major difference in functionality is that a terms object is
subscriptable in S but not in R. If you can't imagine why this would
matter then you don't need to know.
<li>Finally, in R <code>y~x+0</code> is an alternative to <code>y~x-1</code> for