/
NEWS
7984 lines (5352 loc) · 283 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.0 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 2.0.0
USER-VISIBLE CHANGES
o The stub packages from 1.9.x have been removed: the library()
function selects the new home for their code.
o The default barplot() method now by default uses a
gamma-corrected grey palette (rather than the heat color
palette) for coloring its output when given a matrix.
NEW FEATURES
o Function file.edit() function added: like file.show(), but
allows editing.
o edit() and fix() use the object name in the window caption on
some platforms.
o The 'formula' method for boxplot() has a 'na.action' argument,
defaulting to na.pass(). This is mainly useful if the response
is a matrix when the previous default of na.omit() would omit
entire rows. (Related to PR#6846.)
boxplot() and bxp() now obey global 'par' settings and also
allow to specify graphical options in much detail, compatibly
with S-PLUS (fulfilling wishlist entry PR#6832) thanks to
contributions from Arni Magnusson. For consistency, 'boxwex'
is not an explicit argument anymore.
o The 'formula' method for pairs() has a 'na.action' argument,
defaulting to na.pass(), rather than the value of
getOption("na.omit").
o The 'formula' method for mosaicplot() has a 'na.action' argument
defaulting to na.omit.
o The way the comparison operators handle a list argument has
been rationalized so a few more cases will now work -- see
?Comparison.
o deparse(), dput() and dump() have a new 'forDisplay' argument
that indicates that the result is intended to be human-readable.
When TRUE, some details (e.g. attributes, quoting) are omitted.
When FALSE, the result is usually parseable to reproduce the
object. dump() defaults to FALSE, the others default to TRUE.
deparse(), dput() and dump() have a new 'useSource' argument
that indicates they should used saved source for function
definitions (including comments and formatting) rather than
deparsing the internal representation. dump() defaults to
TRUE, the others default to FALSE.
o source() with 'echo = TRUE' uses 'useSource = TRUE' when
displaying commands as they are parsed.
o The screen devices x11(), windows() and quartz() have a new
argument 'bg' to set the default background colour.
o data.frame() and its replacement methods remove the names from
vector columns. Using I() will ensure that names are
preserved.
o Indexing a vector by a character vector was slow if both the
vector and index were long (say 10,000). Now hashing is used
and the time should be linear in the longer of the lengths
(but more memory is used).
o cumsum/prod/max/min() now preserve names.
o Replaying a plot (with replayPlot or autoprinting) now
automagically opens a device if none is open.
o Printing a character string with embedded nuls now prints the
whole string, and non-printable characters are represented by
octal escape sequences.
o str(obj) now displays more reasonably the STRucture of S4 objects.
The method for class "dendrogram" has a new argument 'stem' and
indicates when it's not printing all levels (as typically when
e.g., 'max.level = 2').
o fisher.test(*, conf.int=FALSE) allows the confidence interval
computation to be skipped.
o formula() methods for classes "lm" and "glm" used the expanded
formula (with '.' expanded) from the terms component.
o New function eapply() - apply for environments. The supplied
function is applied to each element of the environment; the order
of application is not specified.
o system.time() has a new argument 'gcFirst' which, when TRUE,
forces a garbage collection before timing begins.
o There is now a coef() method for summaries of "nls" objects.
o ftable.formula() now looks for variables in the environment of
the formula before the usual search path.
o .Defunct() now has 'new' and 'package' arguments like those of
.Deprecated().
o reorder.dendrogram() now has a 'agglo.FUN' argument for
specification of a weights agglomeration function.
o heatmap() has got an argument 'reorderfun'.
o readChar() can now read strings with embedded nuls.
o There is a new atomic vector type, class "raw". See ?raw for
full details including the operators and utility functions provided.
o The png() and jpeg() devices (and the bmp() device under Windows)
now allow a nominal resolution to be recorded in the file.
o ls.str() and lsf.str() now return an object of class "ls_str" which
has a print method.
o There is now a replacement method for window(), to allow a
range of values of time series to be replaced by specifying the
start and end times (and optionally a frequency).
o model.frame() now warns if it is given data = newdata and it
creates a model frame with a different number of rows from
that implied by the size of 'newdata'.
o data.frame(check.names = TRUE) (the default) enforces unique
names, as S does.
o make.names() has a new argument allow_, which if false allows
its behaviour in R 1.8.1 to be reproduced.
o rank() has two new 'ties.method's, "min" and "max".
UTILITIES
o Package utils now contains a much improved citation function
which also has a package argument. By default the citation is
auto-generated from the package DESCRIPTION, the file
`inst/CITATION' can be used to override this, see
help(citation) and help(citEntry).
o R CMD check now checks for file names in a directory that
differ only by case.
C-LEVEL FACILITIES
o The header Rmath.h contains a definition for R_VERSION_STRING
which can be used to track different versions of R and libRmath.
o The Makefile in src/nmath/standalone now has 'install' and
'uninstall' targets -- see the README file in that directory.
o More of the header files, including Rinternals.h, Rdefines.h and
Rversion.h, are now suitable for calling directly from C++.
DEPRECATED & DEFUNCT
o Direct use of R INSTALL|REMOVE|BATCH|COMPILE|SHLIB has been
removed: use R CMD instead.
o La.eigen(), tetragamma(), pentagamma(), package.contents() and
package.description() are defunct.
o The undocumented function newestVersion() is no longer exported
from package utils. (Mainly because it was not completely general.)
o If --enable-R-shlib is specified, a copy of libR is still
installed in $R_HOME/bin, but this will be removed in the near
future. Use that in R_HOME/lib instead.
o C-level entry point ptr_R_GetX11Image has been removed, as it
was replaced by R_GetX11Image at 1.7.0.
o The undocumented C-level entry point R_IsNaNorNA has been
removed. It was used in a couple of packages, and should be
replaced by a call to the documented macro ISNAN.
o The gnome/GNOME graphics device is now defunct.
INSTALLATION CHANGES
o Arithmetic supporting +/-Inf, NaNs and the IEC 60559 (aka
IEEE 754) standard is now required -- the partial and often
untested support for more limited arithmetic has been removed.
The C99 macro isfinite is used in preference to finite if available
(and its correct functioning is checked at configure time).
Where isfinite or finite is available and works, it is used as
the substitution value for R_FINITE. On some platforms this
leads to a performance gain. (This applies to compiled code
in packages only for isfinite.)
o The dynamic libraries libR and libRlapack are now installed in
R_HOME/lib rather than R_HOME/bin.
o When --enable-R-shlib is specified, the R executable is now a
small executable linked against libR: see the R-admin manual
for further discussion. The 'extra' libraries bzip2, pcre,
xdr and zlib are now compiled in a way that allows the code to
be included in a shared library only if this option is
specified, which might improve performance when it is not.
o The main R executable is now R_HOME/exec/R not R_HOME/R.bin, to
ease issues on MacOS X. (The location is needed when debugging
core dumps, on other platforms.)
o Configure now tests for 'inline' and alternatives, and the
src/extra/bzip2 code now (potentially) uses inlining where
available and not just under gcc.
o The XPG4 sed is used on Solaris for forming dependencies,
which should now be done correctly.
BUG FIXES
o rbind.data.frame() dropped names/rownames from columns in all
but the first data frame.
o The dimnames<- method for data.frames was not checking the
validity of the row names.
o Various memory leaks reported by valgrind have been plugged.
o gzcon() connections would sometimes read the crc bytes from
the wrong place, possibly uninitialized memory.
**************************************************
* *
* 1.9 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 1.9.2
INSTALLATION ISSUES
o Installation will now work even in Norwegian and Danish locales
which sort AA at the end (for package stats4 which has AAA.R).
BUG FIXES
o Various memory leaks have been plugged and uses of strcpy()
with overlapping src and dest corrected.
o R CMD INSTALL now also works for /bin/sh's such as the one from
Solaris 8 which fail when a function has the same name as a variable.
o The Date method for trunc() failed.
o window() failed if both start and end were outside the time
range of the original series (possible if extend = TRUE).
o coplot(..) doesn't give an extraneous warning anymore when called
on a fresh device.
CHANGES IN R VERSION 1.9.1
NEW FEATURES
o as.Date() now has a method for "POSIXlt" objects.
o mean() has a method for "difftime" objects and so summary()
works for such objects.
o legend() has a new argument 'pt.cex'.
o plot.ts() has more arguments, particularly 'yax.flip'.
o heatmap() has a new 'keep.dendro' argument.
o The default barplot method now handles vectors and 1-d arrays
(e.g., obtained by table()) the same, and uses grey instead of
heat color palettes in these cases. (Also fixes PR#6776.)
o nls() now looks for variables and functions in its formula in
the environment of the formula before the search path, in the
same way lm() etc look for variables in their formulae.
INSTALLATION ISSUES
o src/modules/X11/dataentry.c would not build on some XFree
4.4.0 systems. (This is a bug in their header files but we have
added a workaround.)
o Building with gcc/g77 3.4.0 on ix86 platforms failed to produce
a working build: the critical LAPACK routines are now compiled
with -ffloat-store.
o Added patches to enable 64-bit builds on AIX 5.1: see the R-admin
manual for details.
o Added some patches to allow non-IEEE-754 installations to work
reasonably well. (Infs and NAs are still not handled properly
in complex arithmetic and functions such as sin(). See also
Deprecated, as support for non-IEEE-754 installations is about
to be removed.)
o Installation will now work in Estonian (et_EE*) locales, which
sort z before u. (PR#6958)
DEPRECATED & DEFUNCT
o Support for non-IEEE-754 arithmetic (which has been untested
for some time) will be removed in the next full release.
o Direct use of R INSTALL|REMOVE|BATCH|COMPILE|SHLIB is
deprecated: use R CMD instead.
o The gnome/GNOME graphics device is deprecated and will be
removed in the next full release.
BUG FIXES
o pbinom(q, N, prob) is now more accurate when prob is close to 0.
(PR#6757).
o pcauchy(x, .., log.p) is now more accurate for large x,
particularly when log.p = TRUE. (PR#6756)
o pgeom(q, prob, lower.tail, log.p) is now (sometimes much) more
accurate when prob is very small. (PR#6792)
The code for pgeom(prob=1) assumed IEEE 754 arithmetic, and
gave NaNs under gcc 3.4.0 -fPIC, for example.
o makeARIMA() was not handling an ARMA(0, 0) model correctly.
o as.Date() was failing on factors. (PR#6779)
o min(), max() and range() were failing on "difftime" objects.
o as.data.frame.list() could fail on some unusual list names.
(PR#6782)
o type.convert() ignored na.strings when no conversion was done.
(PR#6781, not needed for its primary use in read.table.)
o Fixed a clipping problem in the quartz() device.
o Subsetting a factor swapped the order of the attributes, which
identical() cares about. (PR#6799)
o The L-BFGS-B option of optim() apparently needs part of its
workspace zeroed. (PR#6720)
o extractAIC.survreg() needed updating.
o When using the header Rmath.h in standalone mode, the case where
TRUE, FALSE are already defined is now handled correctly.
o Package utils now exports several functions that are needed for
writing Sweave drivers.
o Comparison of two lists/expressions was giving nonsensical
(and often random) answers, and is now an error.
o The C-level function ncols was returning a random answer
(often 0) for a 1D array. This caused model.matrix to
misbehave (perhaps segfault) if a term was a 1D array. (PR#6838)
o The configure script now finds the pdf viewers ggv and gpdf.
o Workaround for the problems strptime on MacOS X has with dates
before 1900.
o 'R CMD build' works in a directory whose path contains spaces.
(PR#6830 under Unix/Linux: it already worked under Windows.)
Also 'R CMD check'.
o mosaicplot() stops cleanly if given a table containing missing values.
o install.packages() from a local CRAN was broken.
o bxp() fixed for e.g., boxplot(..., border=2:4)
o approx(list(x=rep(NaN,9), y=1:9), xout=NaN) does not seg.fault
anymore (PR#6809).
o plot(1, pch=NA) does not give an error anymore and
plot(1:2, pch=c("o",NA)) only prints one symbol (PR#6876).
o diffinv(matrix(3, 7,0)) now works.
o plot.ts(z) for multivariate 'z' now properly draws all 'nc' xlab`s
when nc > 1 and obeys 'ann=FALSE' or 'axes=FALSE'.
o aggregate(.data.frame) failed if the answer would have had one
row.
o recordPlot() and replayPlot() failed to duplicate the display
list, so further plotting altered the saved or replayed object.
o Assignments of the form adf[i,j] <- value now accept a
data-frame value as well as a list value.
o dir.create() sometimes erroneously continued to report a directory
already existed after the first instance. (PR#6892)
o arima.sim() allows a null model.
o which.min() & which.max()'s C code now PROTECT()'s its result.
o Building standalone nmath did not support some of the DEBUG options.
o mle() got confused if start value list was not in same order as
arguments of likelihood function (reported by Ben Bolker)
o backsolve(r, x, k) now allows k < nrow(x) - as its documentation
always claimed.
o update.packages("mgcv") and old.packages(*) now give a better error
message; and installed.packages("mgcv") properly returns <empty>.
o stats:::as.dendrogram.hclust() is documented and no longer re-sorts
the two children at each node. This fixes as.dendrogram(hh) for
the case where hh is a "reordered" hclust object.
plot.dendrogram(x) now draws leaves 'x' more sensibly.
reorder.dendrogram() now results in a dendrogram with correct
"midpoint"s, and hence reordered dendrograms are plotted correctly.
stats:::midcache.dendrogram() and hence the reorder() and rev()
dendrogram methods do not return bloated dendrograms.
o heatmap(*, labRow=., labCol=.) now also reorders the labels when
specified---not only when using default labels.
o Copying lattice (grid) output to another device now works again
(There were intermittent problems in 1.9.0 - PR#6915, #6947/8.)
o hist() uses a more robust choice of its 'diddle' factor, used
to detect if an observation is on a bin boundary. (PR#6931)
o jitter(x) now returns x when length(x) == 0.
o Under some rare circumstances the locale-specific tables used by
the perl=TRUE option to grep() etc were being corrupted and so
matches were missed.
o qbinom(*, prob = 0, lower.tail = FALSE) now properly gives 0.
(PR#6972)
o Class "octmode" needed a "[" method to preserve the class: see
example(file.info) for an example.
CHANGES IN R VERSION 1.9.0
USER-VISIBLE CHANGES
o Underscore '_' is now allowed in syntactically valid names, and
make.names() no longer changes underscores. Very old code
that makes use of underscore for assignment may now give
confusing error messages.
o Package 'base' has been split into packages 'base', 'graphics',
'stats' and 'utils'. All four are loaded in a default
installation, but the separation allows a 'lean and mean'
version of R to be used for tasks such as building indices.
Packages ctest, eda, modreg, mva, nls, stepfun and ts have been
merged into stats, and lqs has been returned to MASS. In all
cases a stub has been left that will issue a warning and ensure
that the appropriate new home is loaded. All the time series
datasets have been moved to package stats. Sweave has been
moved to utils.
Package mle has been moved to stats4 which will become the
central place for statistical S4 classes and methods
distributed with base R. Package mle remains as a stub.
Users may notice that code in .Rprofile is run with only the
new base loaded and so functions may now not be found. For
example, ps.options(horizontal = TRUE) should be preceded by
library(graphics) or called as graphics::ps.options or,
better, set as a hook -- see ?setHook.
o There has been a concerted effort to speed up the startup of
an R session: it now takes about 2/3rds of the time of 1.8.1.
o A warning is issued at startup in a UTF-8 locale, as currently R
only supports single-byte encodings.
NEW FEATURES
o $, $<-, [[, [[<- can be applied to environments. Only character
arguments are allowed and no partial matching is done. The
semantics are basically that of get/assign to the environment with
inherits=FALSE.
o There are now print() and [ methods for "acf" objects.
o aov() will now handle singular Error() models, with a warning.
o arima() allows models with no free parameters to be fitted (to
find log-likelihood and AIC values, thanks to Rob Hyndman).
o array() and matrix() now allow 0-length `data' arguments for
compatibility with S.
o as.data.frame() now has a method for arrays.
o as.matrix.data.frame() now coerces an all-logical data frame
to a logical matrix.
o New function assignInNamespace() parallelling fixInNamespace.
o There is a new function contourLines() to produce contour
lines (but not draw anything). This makes the CRAN package
clines (with its clines() function) redundant.
o D(), deriv(), etc now also differentiate asin(), acos(), atan(),
(thanks to a contribution of Kasper Kristensen).
o The `package' argument to data() is no longer allowed to be a
(unquoted) name and so can be a variable name or a quoted
character string.
o There is a new class "Date" to represent dates (without times)
plus many utility functions similar to those for date-times.
See ?Date.
o Deparsing (including using dump() and dput()) an integer
vector now wraps it in as.integer() so it will be source()d
correctly. (Related to PR#4361.)
o .Deprecated() has a new argument `package' which is used in
the warning message for non-base packages.
o The print() method for "difftime" objects now handles arrays.
o dir.create() is now an internal function (rather than a call to
mkdir) on Unix as well as on Windows. There is now an option
to suppress warnings from mkdir, which may or may not have
been wanted.
o dist() has a new method to calculate Minkowski distances.
o expand.grid() returns appropriate array dimensions and dimnames
in the attribute "out.attrs", and this is used by the
predict() method for loess to return a suitable array.
o factanal(), loess() and princomp() now explicitly check for
numerical inputs; they might have silently coded factor
variables in formulae.
o New functions factorial(x) defined as gamma(x+1) and for
S-PLUS compatibility, lfactorial(x) defined as lgamma(x+1).
o findInterval(x, v) now allows +/-Inf values, and NAs in x.
o formula.default() now looks for a "terms" component before a
'formula' argument in the saved call: the component will have
`.' expanded and probably will have the original environment
set as its environment. And what it does is now documented.
o glm() arguments `etastart' and `mustart' are now evaluated via
the model frame in the same way as `subset' and `weights'.
o Functions grep(), regexpr(), sub() and gsub() now coerce their
arguments to character, rather than give an error.
The perl=TRUE argument now uses character tables prepared for
the locale currently in use each time it is used, rather than
those of the C locale.
o New functions head() and tail() in package `utils'.
(Based on a contribution by Patrick Burns.)
o legend() has a new argument 'text.col'.
o methods(class=) now checks for a matching generic, and so no
longer returns methods for non-visible generics (and
eliminates various mismatches).
o A new function mget() will retrieve multiple values from an
environment.
o model.frame() methods, for example those for "lm" and "glm",
pass relevant parts of ... onto the default method. (This has
long been documented but not done.) The default method is now
able to cope with model classes such as "lqs" and "ppr".
o nls() and ppr() have a `model' argument to allow the model frame
to be returned as part of the fitted object.
o "POSIXct" objects can now have a "tzone" attribute that
determines how they will be converted and printed. This means
that date-time objects which have a timezone specified will
generally be regarded as in their original time zone.
o postscript() device output has been modified to work around
rounding errors in low-precision calculations in gs >= 8.11.
(PR#5285, which is not a bug in R.)
It is now documented how to use other Computer Modern fonts,
for example italic rather than slanted.
o ppr() now fully supports categorical explanatory variables,
ppr() is now interruptible at suitable places in the
underlying FORTRAN code.
o princomp() now warns if both `x' and `covmat' are supplied,
and returns scores only if the centring used is known.
o psigamma(x, deriv=0), a new function generalizes, digamma() etc.
All these (psigamma, digamma, trigamma,...) now also work for x < 0.
o pchisq(*, ncp > 0) and hence qchisq() now work with much higher
values of ncp; it has become much more accurate in the left tail.
o read.table() now allows embedded newlines in quoted fields. (PR#4555)
o rep.default(0-length-vector, length.out=n) now gives a vector
of length n and not length 0, for compatibility with S.
If both `each' and `length.out' have been specified, it now
recycles rather than fills with NAs for S compatibility.
If both `times' and `length.out' have been specified, `times'
is now ignored for S compatibility. (Previously padding with
NAs was used.)
The "POSIXct" and "POSIXlt" methods for rep() now pass ... on
to the default method (as expected by PR#5818).
o rgb2hsv() is new, an R interface the C API function with the same name.
o User hooks can be set for onLoad, library, detach and
onUnload of packages/namespaces: see ?setHook.
o save() default arguments can now be set using option
"save.defaults", which is also used by save.image() if option
"save.image.defaults" is not present.
o New function shQuote() to quote strings to be passed to OS shells.
o sink() now has a split= argument to direct output to both the
sink and the current output connection.
o split.screen() now works for multiple devices at once.
o On some OSes (including Windows and those using glibc)
strptime() did not validate dates correctly, so we have added
extra code to do so. However, this cannot correct scanning
errors in the OS's strptime (although we have been able to
work around these on Windows). Some examples are now tested for
during configuration.
o strsplit() now has `fixed' and `perl' arguments and
split="" is optimized.
o subset() now allows a `drop' argument which is passed on to
the indexing method for data frames.
o termplot() has an option to smooth the partial residuals.
o varimax() and promax() add class "loadings" to their loadings
component.
o Model fits now add a "dataClasses" attribute to the terms, which
can be used to check that the variables supplied for
prediction are of the same type as those used for fitting.
(It is currently used by predict() methods for classes "lm",
"mlm", "glm" and "ppr", as well as methods in packages MASS,
rpart and tree.)
o New command-line argument --max-ppsize allows the size of the
pointer protection stack to be set higher than the previous
limit of 10000.
o The fonts on an X11() device (also jpeg() and png() on Unix)
can be specified by a new argument `fonts' defaulting to the
value of a new option "X11fonts".
o New functions in the tools package: pkgDepends, getDepList and
installFoundDepends. These provide functionality for assessing
dependencies and the availability of them (either locally or
from on-line repositories).
o The parsed contents of a NAMESPACE file are now stored at
installation and if available used to speed loading the
package, so packages with namespaces should be reinstalled.
o Argument `asp' although not a graphics parameter is accepted
in the ... of graphics functions without a warning. It now
works as expected in contour().
o Package stats4 exports S4 generics for AIC() and BIC().
o The Mac OS X version now produces an R framework for easier linking
of R into other programs. As a result, R.app is now relocatable.
o Added experimental support for conditionals in NAMESPACE files.
o Added as.list.environment to coerce environments to lists
(efficiently).
o New function addmargins() in the stats package to add marginal
summaries to tables, e.g. row and column totals. (Based on a
contribution by Bendix Carstensen.)
o dendrogam edge and node labels can now be expressions (to be
plotted via stats:::plotNode called from plot.dendrogram).
The diamond frames around edge labels are more nicely scaled
horizontally.
o Methods defined in the methods package can now include
default expressions for arguments. If these arguments are
missing in the call, the defaults in the selected method will
override a default in the generic. See ?setMethod.
o Changes to package 'grid':
- Renamed push/pop.viewport() to push/popViewport().
- Added upViewport(), downViewport(), and seekViewport() to
allow creation and navigation of viewport tree
(rather than just viewport stack).
- Added id and id.lengths arguments to grid.polygon() to allow
multiple polygons within single grid.polygon() call.
- Added vpList(), vpStack(), vpTree(), and current.vpTree()
to allow creation of viewport "bundles" that may be pushed
at once (lists are pushed in parallel, stacks in series).
current.vpTree() returns the current viewport tree.
- Added vpPath() to allow specification of viewport path
in downViewport() and seekViewport().
See ?viewports for an example of its use.
NOTE: it is also possible to specify a path directly,
e.g., something like "vp1::vp2", but this is only
advised for interactive use (in case I decide to change the
separator :: in later versions).
- Added "just" argument to grid.layout() to allow justification
of layout relative to parent viewport *IF* the layout is not
the same size as the viewport. There's an example in
help(grid.layout).
- Allowed the "vp" slot in a grob to be a viewport name or a
vpPath. The interpretation of these new alternatives is to
call downViewport() with the name or vpPath before drawing the
grob and upViewport() the appropriate amount after drawing the
grob. Here's an example of the possible usage:
pushViewport(viewport(w=.5, h=.5, name="A"))
grid.rect()
pushViewport(viewport(w=.5, h=.5, name="B"))
grid.rect(gp=gpar(col="grey"))
upViewport(2)
grid.rect(vp="A", gp=gpar(fill="red"))
grid.rect(vp=vpPath("A", "B"), gp=gpar(fill="blue"))
- Added engine.display.list() function. This allows the user to
tell grid NOT to use the graphics engine display list and to handle
ALL redraws using its own display list (including redraws after
device resizes and copies).
This provides a way to avoid some of the problems with resizing
a device when you have used grid.convert(), or the gridBase package,
or even base functions such as legend().
There is a document discussing the use of display lists in grid
on the grid web site
(http://www.stat.auckland.ac.nz/~paul/grid/grid.html)
- Changed the implementation of grob objects. They are no longer
implemented as external references. They are now regular R objects
which copy-by-value. This means that they can be saved/loaded
like normal R objects. In order to retain some existing grob
behaviour, the following changes were necessary:
+ grobs all now have a "name" slot. The grob name is used to
uniquely identify a "drawn" grob (i.e., a grob on the display
list).
+ grid.edit() and grid.pack() now take a grob name as the first
argument instead of a grob. (Actually, they take a gPath -
see below)
+ the "grobwidth" and "grobheight" units take either a grob
OR a grob name (actually a gPath - see below). Only in the
latter case will the unit be updated if the grob "pointed to"
is modified.
In addition, the following features are now possible with grobs:
+ grobs now save()/load() like any normal R object.
+ many grid.*() functions now have a *Grob() counterpart. The
grid.*() version is used for its side-effect of drawing
something or modifying something which has been drawn; the
*Grob() version is used for its return value, which is a grob.
This makes it more convenient to just work with grob
objects without producing any graphical output
(by using the *Grob() functions).
+ there is a gTree object (derived from grob), which is a grob
that can have children. A gTree also has a "childrenvp" slot
which is a viewport which is pushed and then "up"ed before the
children are drawn; this allows the children of a gTree to
place themselves somewhere in the viewports specified in the
childrenvp by having a vpPath in their vp slot.
+ there is a gPath object, which is essentially a concatenation
of grob names. This is used to specify the child of
(a child of ...) a gTree.
+ there is a new API for creating/accessing/modifying grob objects:
grid.add(), grid.remove(), grid.edit(), grid.get() (and their
*Grob() counterparts can be used to add, remove, edit, or extract
a grob or the child of a gTree. NOTE: the new grid.edit() API
is incompatible with the previous version.
- Added stringWidth(), stringHeight(), grobWidth(), and grobHeight()
convenience functions (they produce "strwidth", "strheight",
"grobwidth", and "grobheight" unit objects, respectively).
- Allowed viewports to turn off clipping altogether.
Possible settings for viewport clip arg are now:
"on" = clip to the viewport (was TRUE)
"inherit" = clip to whatever parent says (was FALSE)
"off" = turn off clipping
Still accept logical values (and NA maps to "off")
UTILITIES
o R CMD check now runs the (Rd) examples with default RNGkind
(uniform & normal) and set.seed(1).
example(*, setRNG = TRUE) does the same.
o undoc() in package `tools' has a new default of `use.values =
NULL' which produces a warning whenever the default values of
function arguments differ between documentation and code.
Note that this affects "R CMD check" as well.
o Testing examples via massage-examples.pl (as used by R CMD
check) now restores the search path after every help file.
o checkS3methods() in package 'tools' now also looks for generics
in the loaded namespaces/packages listed in the Depends fields
of the package's DESCRIPTION file when testing an installed
package.
o The DESCRIPTION file of packages may contain a 'Suggests:'
field for packages that are only used in examples or
vignettes.
o Added an option to package.dependencies() to handle the
'Suggests' levels of dependencies.
o Vignette dependencies can now be checked and obtained via
vignetteDepends.
o Option 'repositories' to list URLs for package repositories
added.
o package.description() has been replaced by packageDescription().
o R CMD INSTALL/build now skip Subversion's .svn directories as
well as CVS directories.
C-LEVEL FACILITIES
o arraySubscript and vectorSubscript take a new argument which
is a function pointer that provides access to character
strings (such as the names vector) rather than assuming these
are passed in.
o R_CheckUserInterrupt is now described in `Writing R Extensions'
and there is a new equivalent subroutine rchkusr for calling
from FORTRAN code.
o hsv2rgb and rgb2hsv are newly in the C API.
o Salloc and Srealloc are provided in S.h as wrappers for S_alloc
and S_realloc, since current S versions use these forms.
o The type used for vector lengths is now R_len_t rather than
int, to allow for a future change.
o The internal header nmath/dpq.h has slightly improved macros
R_DT_val() and R_DT_Cval(), a new R_D_LExp() and improved
R_DT_log() and R_DT_Clog(); this improves accuracy in several
[dpq]-functions {for "extreme" arguments}.
DEPRECATED & DEFUNCT
o print.coefmat() is defunct, replaced by printCoefmat().
o codes() and codes<-() are defunct.
o anovalist.lm (replaced in 1.2.0) is now defunct.
o glm.fit.null(), lm.fit.null() and lm.wfit.null() are defunct.
o print.atomic() is defunct.
o The command-line arguments --nsize and --vsize are no longer
recognized as synonyms for --min-nsize and --min-vsize (which
replaced them in 1.2.0).
o Unnecessary methods coef.{g}lm and fitted.{g}lm have been
removed: they were each identical to the default method.
o La.eigen() is deprecated now eigen() uses LAPACK by default.
o tetragamma() and pentagamma() are deprecated, since they are
equivalent to psigamma(, deriv=2) and psigamma(, deriv=3).
o LTRUE/LFALSE in Rmath.h have been removed: they were
deprecated in 1.2.0.
o package.contents() and package.description() have been deprecated.
INSTALLATION CHANGES
o The defaults for configure are now --without-zlib
--without-bzlib --without-pcre.
The included PCRE sources have been updated to version 4.5 and
PCRE >= 4.0 is now required if --with-pcre is used.
The included zlib sources have been updated to 1.2.1, and this
is now required if --with-zlib is used.
o configure no longer lists bzip2 and PCRE as `additional
capabilities' as all builds of R have had them since 1.7.0.
o --with-blas=goto to use K. Goto's optimized BLAS will now work.
BUG FIXES
o When lm.{w}fit() disregarded arguments in ... they reported
the values and not the names.
o lm(singular.ok = FALSE) was looking for 0 rank, not rank < p.
o The substitution code for strptime in the sources no longer
follows glibc in silently `correcting' invalid inputs.
o The cor() function did not remove missing values in the
non-Pearson case.
o [l]choose() use a more accurate formula which also slightly
improves p- and qhyper(); choose(n, k) now returns 0 instead
of NaN for k < 0 or > n.
o find(simple.words=TRUE) (the default) was still using regular
expressions for e.g. "+" and "*". Also, it checked the mode
only of the first object matching a regular expression found
in a package.
o Memory leaks in [dpq]wilcox and [dqr]signrank have been plugged.
These only occurred when multiple values of m or n > 50 were
used in a single call. (PR#5314, plus another potential leak.)
o Non-finite input values to eigen(), La.eigen(), svd() and
La.svd() are now errors: they often caused infinite