/
NEWS
2843 lines (1929 loc) · 101 KB
/
NEWS
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
Dear Emacs, please make this -*-Text-*- mode!
**************************************************
* *
* 2.3 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 2.3.0
USER-VISIBLE CHANGES
o In the grid package there are new 'arrow' arguments to
grid.line.to(), grid.lines(), and grid.segments()
(grid.arrows() has been deprecated).
The new 'arrow' arguments have been added BEFORE
the 'name', 'gp' and 'vp' arguments so existing code that
specifies any of these arguments *by position* (not by name)
will fail.
NEW FEATURES
o arima.sim() has a new argument 'start.innov' for compatibility
with S-PLUS. (If not supplied, the output is unchanged from
previous versions in R.)
o Non-syntactic names of list elements are now printed quoted by
backticks rather than double quotes.
o chooseCRANmirror() consults the CRAN master (if accessible) to
find an up-to-date list of mirrors.
o postscript() supports family = "ComputerModernItalic" for
Computer Modern with italic (rather than slanted) faces.
o New function Axis(), a generic version of axis(), with Date and
POSIX[cl]t methods. This is used by most of the standard
plotting functions (boxplot, contour, coplot, filled.contour,
pairs, plot.default, rug, stripchart) which will thus label x
or y axes appropriately.
o pairs() allows a wider class of inputs, including data frames
with date and date-time columns.
o scan() and write.table() now have some interruptibility, which
may be useful when processing very large files.
o There is some basic checking for imminent C stack overflow (when
the evaluation depth and the user interrupts are checked).
This is likely to be refined before release, and is currently
only active when using an R front-end except on Linux, FreeBSD
and Windows.
New function Cstack_info() reports on stack size and usage.
o options(expressions) reverts to the default of 5000 now
stack checking is in place.
o Package tcltk does not try to initialize Tk on Unix-alikes
unless a DISPLAY variable is present. This allows packages
dependent on tcltk to be installed without access to an X server.
o The code used to guess timezone offsets where not supplied by
the OS uses a different algorithm that is more likely to guess
the summer time transitions correctly.
o new.packages() gains a ... argument to pass e.g. 'destdir' to
install.packages(). (Wish of PR#8239.)
o Added "hexmode" to parallel "octmode".
o Package tools contains translation tables 'Adobe_glyphs' and
'charset_to_Unicode'.
o R CMD INSTALL will clean up if interrupted (e.g. by ctrl-C from
the keyboard).
o On Unix-alikes, X11() now has arguments to request the initial
position of the window, and 'gamma' defaults to the value of
getOptions("gamma"). These changes are consistent with the
windows() device.
o The font metrics for the 14 standard fonts (only, not the rest
of the common 35) have been updated to versions from late 1999
which cover more glyphs. There are also a few differences in
the metrics and hence the output might be slightly different
in some cases.
o pdf() now allows 'family' to be specified in the same
generality as postscript().
o X11() and the Unix-alike data entry window can have properties
(including geometry) set by X resources: see their help files.
o is.loaded() has a new argument 'type' to confine the search to
symbols for .C, .Fortran, .Call or .External: by default it
looks for a symbol which will match any of them. It is now
internal and not primitive, so argument matching works in the
usual way.
o plot.xy() now takes its default arguments from the
corresponding par() setting, so points(type="l") and
lines(type="p") behave in the same way (and more obviously,
also for type="b").
o arrows() has been changed to be more similar to segments():
for example col=NA omits the arrow rather than as previously
(undocumented) using par("col").
o The 'col' argument of legend() now defaults to par("col")
(which defaults to "black", the previous default), so that
the lines/symbols are shown in the legend in the colour that
is used on the plot.
o New Vectorize() function, a wrapper for mapply().
o Changed environment tree to be rooted in an empty environment,
available as emptyenv(). baseenv() modified to return an
environment with emptyenv() as parent, rather than NULL.
o The way families can be specified for postscript() and pdf()
has been expanded to include CID-keyed fonts, with new
functions Type1Font() and CIDFont() to set up such fonts
families.
o log2() and log10() call C functions of the same name if
available, and will then be more likely to be precise to
machine accuracy.
o par() and the in-line use of graphical parameters produce more
informative error messages, distinguishing between
non-existent pars and inappropriate use of valid pars.
Graphical parameters 'family', 'lend', 'ljoin' and 'lmitre'
can now be set in-line.
There is no longer a warning if non-settable pars are used
in-line, but there is an appropriate warning if unknown pars
are passed.
The length limit for the 'family' parameter has been increased
to 200 bytes, to allow for the names of some CID-keyed fonts
in multi-byte locales.
o Plotmath allows 'vartheta', 'varphi' and 'varsigma' (or 'stigma')
as synonyms for 'theta1', 'phi1' and 'sigma1', and the help
page has a note for TeX users.
o require() now takes a 'lib.loc' argument.
o poly() has a new argument 'raw', mainly for pedagogical purposes.
o [dpqr]gamma now returns NaN for an invalid 'shape' parameter
(rather than throw an error), for consistency with other
distribution functions.
o Sys.time() now has sub-millisecond accuracy on systems
supporting the POSIX call gettimeofday, and to clock-tick
accuracy on Windows.
o read.table() gains a 'flush' argument passed to scan().
o fisher.test() now uses p-values computed via hypergeometric
distributions for all 2 by 2 tables. This might be slightly
slower for a few cases, but works much better for tables with
some large counts.
There is a new option to simulate the p-value for larger than
2 x 2 tables.
o PCRE has been updated to version 6.4.
o getNativeSymbolInfo() is vectorized for the 'name' argument. It
returns a named list of NativeSymbolInfo objects, but is
backward compatible by default when called with a character
vector of length 1, returning the NativeSymbolInfo object.
o The method $.DLLInfo resolves the specified symbol in the DLL,
returning a NativeSymbolInfo object. Use [[ to access the actual
values in the DLLInfo object.
o The useDynLib() directive in the NAMESPACE file now accepts the
names of the native/foreign symbols that are to be resolved in
the DLL for use in .C/.Call/.Fortran/.External calls. These
can be used as regular R variables instead of the (routine
name, PACKAGE) pairs currently recommended. Alternative names
can be given for the R variables mapping to these symbols.
The native routine registration information can also be used
directly via useDynLib(name, .registration = TRUE). See the
Writing R Extensions manual for more details.
o R CMD check works for packages whose package name is different
from the directory name in which it is located.
o cov.wt() is more efficient for 'cor = TRUE' and has a new 'method'
argument which allows 'Maximum Likelihood'.
DEPRECATED & DEFUNCT
o The deprecated and undocumented use of atan() with two arguments
has been removed: instead use atan2().
o write.table0() is defunct in favour of write.table().
o format.char() is defunct in favour of format.default().
o Support for the long-deprecated (and no longer documented)
arguments --min-vsize --min-nsize --max-vsize --max-nsize
--vsize --nsize of R CMD BATCH has been removed.
o The re-named tcltk functions tkcmd, tkfile.tail, tkfile.dir,
tkopen, tkclose, tkputs, tkread are now formally deprecated.
o Argument 'col' of bxp() is now formally deprecated.
o The 'debian' subdirectory has been removed from the sources.
o The 'vfont' argument of axis() and mtext() has been removed:
use par(family=) instead.
o The unused graphical parameter "type" has been removed: it
invited confusion with the 'type' argument to default methods
of plot(), points() and lines().
o Use of NULL as an environment is deprecated and gives a warning.
o postscriptFont() is deprecated in favour of Type1Font() (which
is just a change of name).
INTERNATIONALIZATION
A set of patches supplied by Ei-ji Nakama has been incorporated.
o New postscript encodings for CP1253, CP1257 and Greek (ISO 8859-7).
o Support for East Asian CID-keyed fonts in pdf() and postscript().
o Wide-character width functions wc[s]width are provided that
overcome problems found with OS-supplied ones (and those
previously used by R on Windows). This means that
double-width CJK characters are now supported on all
platforms. It seems that the width of some characters (and
not just CJK characters) depends on which CJK locale's fonts
are in use and also on the OS.
Revised wide-character classification functions are
provided for use on Windows, AIX and MacOS X to replace
deficient OS-supplied ones.
o There is support for MBCS charsets in the pictex() graphics
device, and rotated (by 90 degrees) text may work better.
o The \u (and \U except on Windows) notation for characters which
is supported by the parser in all MBCS charsets is now always
interpreted as a Unicode point, even on platforms which do not
encode wchar_t in Unicode. These are now a syntax error in
single-byte locales.
o The default encoding for postscript() and pdf() is chosen to
be suitable for the current locale, if that is a single-byte
locale which is supported. This covers European (including
Greek) and Cyrillic languages.
In UTF-8 locales, a suitable single-byte encoding is chosen
for postscript() and pdf(), and text translated to it.
o xfig() gains an 'encoding' argument.
INSTALLATION CHANGES
o The encoding files for pdf()/postscript() have been moved to
directory 'enc' in package 'grDevices'.
o Support for MBCS is only enabled if iconv is found and it
supports enough conversions. (libiconv does.)
o In a MBCS locale, make check now translates the graphics
examples from Latin-1. This ensures that they will work
correctly in UTF-8: it is possible that in other MBCS locales
they will now fail (rather than work completely incorrectly).
o There is a new test, 'test-Docs', which as part of 'make
check-devel' tests the code in the documentation. Currently
it runs doc/manual/R-{exts,intro}.R.
UTILITIES
o R CMD check now uses an install log by default.
C-LEVEL FACILITIES
o qgamma and rgamma in Rmath.h now check for non-positive arguments.
o The BLAS which ships with R now contains the complete set of
double-complex BLAS routines, rather than just those used in R.
<R_ext/BLAS.h> has been corrected to add the missing
double-precision BLAS functions drotmg and drotm, and to
exclude lsame (which is a Lapack auxiliary function and is now
declared in <R_ext/Lapack.h>). It also includes the double
complex routines added for this release of R provided Fortran
doublecomplex is usuable on the platform.
o <R_ext/BLAS.h> and <R_ext/Lapack.h> now declare all the entry
points as 'extern'.
BUG FIXES
o Quoted arguments to the R script after --args are now
passed quoted to the R executable and so will be shown as
expected by commandArgs(). (They were previously split at
whitespace even inside quotes on Unix-alikes but not on
Windows.)
o axis() now supports pars 'xaxp'/'yaxp' as inline arguments.
o sort() now does not return inappropriate attributes such as
"dim" and "tsp": it only returns names.
sort(x, partial=) no longer returns unsorted names, and drops
names (since it is supplied for efficiency).
o Use of non-central F in pf() gives accurate values for larger ncp.
**************************************************
* *
* 2.2 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 2.2.0 patched
USER-VISIBLE CHANGES
o options("expressions") has been reduced to 1000: the limit
of 5000 introduced in 2.1.0 was liable to give crashes from C
stack overflow.
NEW FEATURES
o Use of 'pch' (e.g. in points) in the symbol font 5 is now
interpreted in the single-byte encoding used by that font.
Similarly, strwidth now recognizes that font 5 has a different
encoding from that of the locale. (These are likely to affect
the answer only in MBCS locales such as UTF-8.)
o The URW font metrics have been updated to versions from late
2002 which cover more glyphs, including Cyrillic.
o New postscript encodings for CP1250 (Windows East European),
ISO Latin-7 (8859-13, Latvian, Lithuanian and Maori), Cyrillic
(8859-5), KOI8-R, KOI8-U and CP1251.
o configure has more support for the Intel and Portland Group
compilers on ix86 and x86_64 Linux.
DEPRECATED & DEFUNCT
o The undocumented use of atan() with two arguments is deprecated:
instead use atan2() (as documented).
o The 'vfont' argument of axis() and mtext() is deprecated
(it currently warns and does nothing).
BUG FIXES
o The malloc's of AIX and OSF/1 which return NULL for size 0
are now catered for in src/main/regex.c.
o Names of list elements which are missing are now printed as
$<NA> and not $"NA" (which is how the non-missing name "NA" is
printed). (Brought up in discussion of PR#8161.)
o help.start() was not linking R.css for use by its front page and
immediate links (2.2.0 only).
o Indexing by character NA matched the name "NA".
o The arith-true test used random inputs and did not set the seed, so
it could fail very occasionally.
o arima() with 'fixed' supplied and p=0 for the non-seasonal
part could give spurious warnings about 'some AR parameters
were fixed'.
o summary.matrix() could give an infinite recursion on some
classed objects (e.g. those of class "Surv").
o The 255th character in an 8-bit character set was not handled
correctly as a letter on some platforms where C char is
signed: for example it was printed as \377 and not allowed in
variable names. (Spotted by Alexey Shipunov in Russian
encodings.)
o Conversion from POSIXct to POSIXlt is done more accurately
around the change of DST in years not supported by the OS
(pre-1970 on Windows and some others, and in the far past or
future).
o chisq.test(cbind(1:0, c(7,16)), simulate.p = TRUE) gave wrong
P-values on some platforms. (PR#8224)
o pdf() was not writing details of the encoding to the file
correctly. (Spotted by Alexey Shipunov in Russian encodings.)
o image() was failing with an error when plotting a matrix
of all NA values. (PR#8228)
image() could fail if called with add=FALSE (the default) and
length(x)=1 for either x or y, as it uses the plot coordinates of
the previous plot (if any).
o tools::checkMD5sums was not accepting file names with spaces in.
o The plot() method for TukeyHSD() needed updating after adding
adjusted p-values. (PR#8229)
o read.fwf() did not work for header = TRUE. (PR#8226)
o diag() failed when its argument had NA values in its dimnames.
o [g]sub(pcre=TRUE) did not work correctly with \U and \L in a
UTF-8 locale, even on the example on the help page.
o promptMethods() was failing if the "methods" argument was supplied.
o is.loaded() now finds Fortran symbols whether or not the
registration mechanism has been used.
o ISODateTime() mistakenly corrected non-existent times (when
DST was being started) in the current time zone.
o Some replacement operations on data frames gave incorrect
answers, e.g. DF[3:4, "y"] if column "y" did not exist or was
a matrix.
o getGraphicsEvent() would cause memory corruption if passed an
empty prompt.
o qr() and chol() now pivot the colnames of the result when
pivoting is used. (PR#8258)
o example(points) omitted pch=0, although it was valid and
said in the text to be illustrated.
o plot.default() had an unused 'lab' argument, thereby preventing
the 'lab' graphics parameter being passed through '...' .
o Although polygon(col = NA) was the stated default, specifying
NA was not equivalent to omitting the argument (but col=NULL
was equivalent).
o Im(-1) was pi. (PR#8272, a side effect from all previous
versions of R returning the same value for Im and Arg of
non-complex numbers.)
o symbols(fg) defaulted to colour 1, not par("col") as documented.
It does now defaults to par("col").
o par("family") did not check the length of the value (up to 49
bytes) and so could segfault.
o aggregate.ts() did not allow for rounding in frequencies such
as 1/5.
o prcomp(tol=) was not dropping the sdev's corresponding to
dropped columns.
o Subassignment of a vector which increased the length of the
vector _and_ had the wrong length of replacement could
occasionally segfault. (This has been there since at least
mid 1997.)
o The registration of .Fortran symbols was broken: these could
only be looked up if there were also .Call symbols registered!
o R CMD build was incorrectly rejecting the recommended form of
name for a translation package, 'Translation-ll'. (PR#8314)
o numericDeriv() gave nonsense results unless the variables were
real, which was not checked.
o predict.prcomp() would sometimes give an error when predicting
a single observation. (PR#8324)
o mapply() could segfault if MoreArgs was not a list. (PR#8332)
o The arith-true test used identical() on floating-point results,
and this allowed a failure when the relative difference was
less than .Machine$double.eps but non-zero.
o qbinom() was not accepting p = -Inf when log.p = TRUE, although
it is a legitimate value.
o write.csv[2] only accepts logical constants for 'row.names', and
now accepts variables.
o Conversion of .Rd files did not correctly match braces
enclosing a whole argument, e.g. \eqn{{\bf a}}{a}.
CHANGES IN R VERSION 2.2.0
USER-VISIBLE CHANGES
o plot(<lm object>) uses a new default 'which = 5'
for the fourth panel when 'which' is not specified.
o The SVN revision number will appear after the date in the
welcome message. The date shown is now the date of the last
change to the sources rather than the date the sources were
prepared.
o is.null(expression()) now returns FALSE. Only NULL gives TRUE
in is.null().
o graphics::xy.coords, xyz.coords and n2mfrow have been moved to
the grDevices name space (to be available for grid as well).
graphics::boxplot.stats, contourLines, nclass.*, and chull
have been moved to the grDevices name space. The C code
underlying chull() has been moved to package grDevices.
o split(x, f), split<-() and unsplit() now by default split by all
levels of a factor f, even when some are empty.
Use split(x, f, drop = TRUE) if you want the old behavior of
dropping empty levels. split() and split<-() are S3 generic
functions with new arguments 'drop' and '...' and all methods now
should have 'drop' and '...' arguments as well.
o The default for 'allowEscapes' in both read.table() and scan()
has been changed to FALSE.
o The default for 'gcFirst' in system.time() is now TRUE.
NEW FEATURES
o .Platform has a new component 'path.sep', the separator used
between paths in environment variables such as PATH and TEXINPUTS.
o anova.mlm() now handles the single-model case.
o Hexadecimal values are now allowed for as.numeric() and
as.integer() on all platforms, and as integer constants in R code.
o attach() now prints an information message when objects are
masked on the search path by or from a newly attached database.
o axis() now returns 'at' positions.
o axis() has a new argument 'hadj' to control horizontal
adjustment of labels.
o axis.Date() and axis.POSIXct() now accept a 'labels' argument
(contributed by Gavin Simpson).
o barplot() now has arguments 'log = ""' and 'add = FALSE'
(as in barplot2() from package 'gplots').
o baseenv() has been added, to return the base environment. This
is currently still NULL, but will change in a future release.
o boxplot() now responds to supplying 'yaxs' (via bxp()).
(Wish of PR#8072.)
o capabilities() has a new component 'NLS'.
o cbind() and rbind() now react to 'deparse.level' = {0,1,2}
(as in another system not unlike R).
o Experimental versions of cbind() and rbind() in methods package,
based on new generic function cbind2(x,y) and rbind2(). This will
allow the equivalent of S4 methods for cbind() and rbind() ---
currently only after an explicit activation call, see ?cbind2.
o New functions cdplot() and spineplot() for conditional density
plots and spine plots or spinograms. Spine plots are now used
instead of bar plots for x-y scatterplots where y is a factor.
o checkDocFiles() in package 'tools' now checks for bad \usage
lines (syntactically invalid R code).
o The nonparametric variants of cor.test() now behave better in
the presence of ties. The "spearman" method uses the asymptotic
approximation in that case, and the "kendall" method likewise,
but adds a correction for ties (this is not necessary in the
Spearman case).
o The X11 dataentry() now has support for X Input Methods
(contributed by Ei-ji Nakama).
o density() is now an S3 generic where density.default() {former
density()} has new argument 'weights' for specifying observation
masses different than the default 1/N -- based on a suggestion and
code from Adrian Baddeley.
o download.packages() now carries on if it encounters a download
error (e.g. a repository with a corrupt index).
o dump() now skips missing objects with a warning rather than
throw an error.
o Added "POSIXlt" methods for duplicated() and unique().
o Function encoded_text_to_latex() in package tools translates
Latin 1,2,9 and UTF-8 encoded character vectors to LaTeX
escape sequences where appropriate.
o encodeString() allows justify = "none" for consistency with
format.default(). Some argument names have been lengthened
for clarity.
o file(), fifo() and pipe() now (if possible) report a reason
if they fail to open a connection.
o format.default() now has a 'width' argument, and 'justify' can
now centre character strings.
format.default() has new arguments 'na.encode' to control
whether NA character strings are encoded (true by default),
and 'scientific' to control the use of fixed/scientific
notation for real/complex numbers.
How format() works on a list is now documented, and uses
arguments consistently with their usage on an atomic vector.
o format.info() now has a 'digits' argument, and is documented
to work for all atomic vectors (it used to work for all but
raw vectors.).
o New function glob2rx() for translating `wildcard' aka `globbing'
to regular expressions.
o There is a new function gregexpr() which generalizes regexpr()
to search for all matches in each of the input strings (not
just the first match).
o [g]sub() now have a 'useBytes' argument like grep() and regexpr().
o [g]sub(perl = TRUE) support \L and \U in the replacement.
o iconv() has been moved from 'utils' to 'base'.
o identify()'s default method has additional arguments 'atpen'
and 'tolerance' (following S).
o KalmanForecast() and KalmanLike() now have an optional argument
fast=FALSE to prevent their arguments being modified.
o Exact p-values are available in ks.test() for the one-sided and
two-sided one-sample Kolmogorov-Smirnov tests.
o labels() now has a method for "dist" objects (replacing that
for names() which was withdrawn in 2.1.0).
o library() now explicitly checks for the existence of
directories in 'lib.loc': this avoids some warning messages.
o loadNamespace(keep.source=) now applies only to that namespace
and not others it might load to satisfy imports: this is now
consistent with library().
o match.arg() has a new argument 'several.ok = FALSE'.
o max.col() has a new argument for non-random behavior in the
case of ties.
o memory.profile() now uses the type names returned by typeof()
and no longer has two unlabelled entries.
o methods() now warns if it appears to have been called on a
non-generic function.
o The default mosaicplot() method by default draws grey boxes.
o nlminb(), similar to that in S-PLUS, added to package 'stats'.
o New algorithm "port" (the nl2sol algorithm available in the
Port library on netlib) added to the nls() function in the
'stats' package.
o object.size() now supports more types, including external
pointers and weak references.
o options() now returns its result in alphabetical order, and is
documented more comprehensively and accurately. (Now all
options used in base R are documented, including
platform-specific ones.)
Some options are now set in the package which makes use of
them (grDevices, stats or utils) if not already set when the
package is loaded.
o New option("OutDec") to set the decimal point for output conversions.
o New option("add.smooth") to add smoothers to a plot, currently
only used by plot.lm().
o pie() has new optional arguments 'clockwise' and 'init.angle'.
o plot.lm() has two new plots (for 'which' = 5 or 6), plotting
residuals or cook distances versus (transformed) leverages - unless
these are constant. Further, the new argument 'add.smooth' adds a
loess smoother to the point plots by default, and 'qqline = TRUE'
adds a qqline() to the normal plot.
The default for 'sub.caption' has been improved for long calls.
o R.home() has been expanded to return the paths to components
(which can as from this version be installed elsewhere).
o readbin() and writeBin() now support raw vectors as well as
filenames and connections.
o read.dcf() can now read gzipped files.
o read.table() now passes 'allowEscapes' to scan().
o sample(x, size, prob, replace = TRUE) now uses a faster
algorithm if there are many reasonably probable values. (This
does mean the results will be different from earlier versions
of R.) The speedup is modest unless 'x' is very large _and_
'prob' is very diffuse so that thousands of distinct values
will be generated with an appreciable frequency.
o scatter.smooth() now works a bit more like other plotting
functions (e.g., accepts a data frame for argument 'x').
Improvements suggested by Kevin Wright.
o signif() on complex numbers now rounds jointly to give the
requested number of digits in the larger component, not
independently for each component.
o New generic function simulate() in the 'stats' package with
methods for some classes of fitted models.
o smooth.spline() has a new argument 'keep.data' which allows to
provide residuals() and fitted() methods for smoothing splines.
o Attempting source(file, chdir=TRUE) with a URL or connection
for 'file' now gives a warning and ignores 'chdir'.
o source() closes its input file after parsing it rather than
after executing the commands, as used to happen prior to
2.1.0. (This is probably only significant on Windows where
the file is locked for a much shorter time.)
o split(), split<-(), unsplit() now have a new argument 'drop = FALSE',
by default not dropping empty levels; this is *not* back compatible.
o sprintf() now supports asterisk `*' width or precision
specification (but not both) as well as `*1$' to `*99$'. Also the
handling of `%' as conversion specification terminator is now
left to the system and doesn't affect following specifications.
o The plot method for stl() now allows the colour of the range
bars to be set (default unchanged at "light gray").
o Added tclServiceMode() function to the tcltk package to allow
updating to be suspended.
o terms.formula() no longer allows '.' in a formula unless there
is a (non-empty) 'data' argument or 'allowDotAsName = TRUE' is
supplied. We have found several cases where 'data' had not
been passed down to terms() and so '.' was interpreted as a
single variable leading to incorrect results.
o New functions trans3d(), the 3D -> 2D utility from persp()'s
example, and extendrange(), both in package 'grDevices'.
o TukeyHSD() now returns p-values adjusted for multiple comparisons
(based on a patch contributed by Fernando Henrique Ferraz P. da Rosa).
o New functions URLencode() and URLdecode(), particularly for use
with file:// URLs. These are used by e.g. browse.env(),
download.file(), download.packages() and various help() print
methods.
o Functions utf8ToInt() and intToUtf8() to work with UTF-8
encoded character strings (irrespective of locale or OS-level
UTF-8 support).
o [dqp]wilcox and wilcox.test work better with one very large sample
size and an extreme first argument.
o write() has a new argument 'sep'.
o write.csv[2] now also support row.names = FALSE.
o The specification of the substitutions done when processing
Renviron files is more liberal: see ?Startup. It now
accepts forms like R_LIBS=${HOME}/Rlibrary:${WORKGRP}/R/lib .
o Added recommendation that packages have an overview man page
<pkg>-package.Rd, and the promptPackage() function to create a
skeleton version.
o Replacement indexing of a data frame by a logical matrix index
containing NAs is allowed in a few more cases, in particular
always when the replacement value has length one.
o Conversion of .Rd files to latex now handles encoding more
comprehensively, including some support for UTF-8.
o The internal regex code has been upgraded to glibc-2.3.5.
Apart from a number of bug fixes, this should be somewhat
faster, especially in UTF-8 locales.
o PCRE has been updated to version 6.2.
o zlib has been updated to version 1.2.3.
o bzip2 has been updated to version 1.0.3.
o Complex arithmetic is now done by C99 complex types where
supported. This is likely to boost performance, but is
subject to the accuracy with which it has been implemented.
o The printing of complex numbers has changed, handling numbers
as a whole rather than in two parts. So both real and
imaginary parts are shown to the same accuracy, with the
'digits' parameter referring to the accuracy of the larger
component, and both components are shown in fixed or
scientific notation (unless one is entirely zero when it is
always shown in fixed notation).
o Error messages from .C() and .Fortran(), and from parsing errors,
are now more informative.
o The date and date-time functions work better with dates more
than 5000 years away from 1970-01-01 (by making dubious
assumptions about the calendar in use).
o There is now a traditional Chinese translation, and a much more
extensive Russian translation.
DEPRECATED & DEFUNCT
o Capability "IEEE754" is defunct.
o loadURL() is defunct: use load(url()).
o delay() is defunct: use delayedAssign() instead.
o The 'CRAN' argument to update.packages(), old.packages(),
new.packages(), download.packages() and install.packages() is
defunct in favour of 'repos'.
o write.table0() is deprecated in favour of the much faster
write.table().
o format.char() is deprecated in favour of format.default().
o R_HOME/etc/Rprofile is no longer looked for if
R_HOME/etc/Rprofile.site does not exist. (This has been
undocumented since R 1.4.0.)
o CRAN.packages() is deprecated in favour of available.packages().
o Rd.sty no longer processes pre-2.0.0 conversions containing \Link.
o The stubs for the defunct device GNOME/gnome have been removed.
o print.matrix() (which has been identical to print.default since
R 1.7.0) has been removed.
INSTALLATION
o LDFLAGS now defaults to -L/usr/local/lib64 on most Linux
64-bit OSes (but not ia64). The use of lib/lib64 can be
overridden by the new variable LIBnn.
o The default installation directory is now ${prefix}/${LIBnn}/R,
/usr/local/lib64/R on most 64-bit Linux OSes and /usr/local/lib/R
elsewhere.
o The places where the doc, include and share directory trees are
installed can be specified independently: see the R-admin manual.
o We now test for wctrans_t, as apparently some broken OSes have
wctrans but not wctrans_t (which is required by the relevant
standards) .
o Any external BLAS found is now tested to see if the complex
routine zdotu works correctly: this provides a compatibility
test of compiler return conventions.
o Installation without NLS is now cleaner, and does not install
any message catalogues.
o src/modules/lapack/dlamc.f is now compiled with -ffloat-store
if f2c/gcc are used, as well as if g77 is used.
o All the Fortran code has been checked to be fully F77
compliant so there are no longer any warnings from F95
compilers such as gfortran.
o The (not-recommended) options --with-system-zlib,
--with-system-bzlib and -with-system-pcre now have 'system' in
the name.
o If a Java runtime environment is detected at configure time
its library path is appended to LD_LIBRARY_PATH or equivalent.
New Java-related variables JAVA_HOME (path to JRE/JDK), JAVA_PROG
(path to Java interpreter), JAVA_LD_PATH (Java library path)
and JAVA_LIBS (flags to link against JNI) are made available
in Makeconf.
o Ei-ji Nakama was contributed a patch for FPU control with the
Intel compilers on ix86 Linux.
MAC OS X INSTALLATION
o --with-blas="-framework vecLib" --with-lapack and
--with-aqua are now the default configure options.
o The default framework version name was changed to not contain
the patch level (i.e. it is now 2.2 instead of 2.2.0). Also
it can be overridden at configure time by setting FW_VERSION
to the desired name.
o The Rmath stand-alone library is now correctly installed inside
the R.framework if R was configured as a framework. In
addition, make install-Rmath-framework will install a
stand-alone Rmath framework in /Library/Frameworks (unless
overridden by RMATH_FRAMEWORK_DIR specifying full framework
path and name including the .framework extension).
PACKAGE INSTALLATION
o The encoding for a packages' 00Index.html is chosen from the
Encoding: field (if any) of the DESCRIPTION file and from the
\encoding{} fields of any Rd files with non-ASCII titles.
If there are conflicts, first-found wins with a warning.
o R_HOME/doc/html/packages.html is now remade by R not Perl code.
This may result in small changes in layout and a change in
encoding (to UTF-8 where supported).
o The return value of new.packages() is now updated for any
packages which may be installed.
o available.packages() will read a compressed PACKAGES.gz file in
preference to PACKAGES if available on the repository: this
will reduce considerably the download time on a dialup connection.
The downloaded information about a repository is cached for the
current R session.
o The information about library trees found by
installed.packages() is cached for the current session, and
updated only if the modification date of the top-level
directory has been changed.
o A data index is now installed for a package with a 'data' dir
but no 'man' dir (even though it will have undocumented data objects).
o contrib.url path for type="mac.binary" has changed from
bin/macosx/<version> to bin/macosx/<arch>/contrib/<version>
where <arch> corresponds to R.version$arch
UTILITIES
o checkFF() used by R CMD check has since R 2.0.0 not reported
missing PACKAGE arguments when testing installed packages with
namespaces. It now
- treats installed and source packages in the same way.
- reports missing arguments unless they are in a function in
the namespace with a useDynLib declaration (as the
appropriate DLL for such calls can be searched for).
o Rd2dvi sets the encoding(s) used appropriately. If UTF-8