-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNEWS.1
8108 lines (5438 loc) · 287 KB
/
NEWS.1
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!
This file covers NEWS for the 1.x series
See 'NEWS.2' for subsequent changes.
**************************************************
* *
* 1.9 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 1.9.1 Patched
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.
o hasArg() used wrong logic to get the parent function. (sys.function()
behaves differently from what is documented.)
o prompt(f) now gives proper \usage{..} for
f <- function(x, g = function(u) { v <- u^2 ; sin(v)/v }) { g(x) }
o package.skeleton() now uses the supplied name in the DESCRIPTION
file.
o options(list('digits', 'scipen')) no longer seg.faults, the
problem being the misuse of a list (PR#7078).
o summary.Date() now has a more sensible default for 'digits'.
o list.files(all.files = TRUE, recursive = TRUE) died on infinite
recursion. (PR#7100)
o cor(as.array(c(a=1,b=2)), cbind(1:2)) no longer seg.faults (PR#7116).
cor(), cov() and var() no longer accidentally work with list()
arguments as if they were unlist()ed.
o as.matrix(data.frame(d=as.POSIXct("2004-07-20"))) doesn't give a
wrong warning anymore.
o gsub(perl=TRUE) code got the R length of return strings wrong
in some circumstances (when the string was shortened).
(Fixed also PR#7108)
o summaryRprof() was ignoring functions whose name begins with dot,
e.g. .C, .Call, .Fortran. (PR#7137)
o loglin() could segfault if 'start' was of the wrong length. (PR#7123)
o model.tables(type="means") could fail in a design where a
projection gave all zeros. (PR#7132)
o Applying attributes() to a pairlist, e.g. .Options, could segfault.
o The checking of R versions incorrectly assumed 1.9.1 >= 1.50.
o str(Surv(..)) failed for type = "counting" Surv objects and for
promises.
o approx(c(1,2),c(NA,NA),1.5,rule=2) does not segfault anymore
(PR#7177), but gives an error.
o nls(model = TRUE) was broken.
o Subsetted assignments of the form A[i1, i2, i3] <- B stopped as
soon as an NA was encountered in an index so subsequent non-NA
indices were ignored. (PR#7210)
o Fixed bug in handling of lwd=NA in contour().
o is.na() was returning undefined results on nested lists.
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
looping. (PR#5406, PR#4366, PR#3723: the fix for 3723/4366
returned a vector of NAs, not a matrix, for the eigenvectors.)
o stepfun(x,y) now gives an error when `x' has length 0 instead
of an invalid result (that could lead to a segmentation
fault).
o buildVignettes() uses file.remove() instead of unlink() to
remove temporary files.
o methods(class = "lqs") does not produce extraneous entries anymore.
o Directly calling a method that uses NextMethod() no longer
produces the erroneous error message 'function is not a
closure'.
o chisq.test(x, simulate.p.value = TRUE) could hang in an infinite
loop or segfault, as r2dtable() did, when the entries in x where
large. (PR#5701)
o fisher.test(x) could give a P-value of 'Inf' in similar cases which
now result in an error (PR#4688). It silently truncated
non-integer 'x' instead of rounding.
o cutree(a, h=h) silently gave wrong results when 'a' was an
agnes object; now gives an error and reminds of as.hclust().
o postscript() could crash if given a font value outside the
valid range 1...5.
o qchisq(1-e, .., ncp=.) did not terminate for small e.
(PR#6421 (PR#875))
o contrasts() turns a logical variable into a factor. This now
always has levels c("FALSE", "TRUE") even if only one (or
none) of these occur in the variable.
o model.frame()'s lm and glm methods had 'data' and 'na.action'
arguments which they ignored and have been removed.
o The defaults data=list() in lm() and glm() could never be
used and have been removed. glm had na.action=na.fail, again
never used.
o The internal tools function for listing all internal S3 generics
was omitting all the members of the S3 group generics, which
also accept methods for members.
o Some BLASes were returning NA %*% 0 as 0 and some as NA. Now
slower but more careful code is used if NAs are present. (PR#4582)
o package.skeleton() no longer generates invalid filenames for
code and help files. Also, care is taken not to generate
filenames that differ only by case.
o pairs() now respects axis graphical parameters such as
cex.main, font.main and las.
o Saving images of packages with namespaces (such as mle) was
not compressing the image.
o When formula.default() returned a terms object, it returned a
result of class c("terms", "formula") with different
subsetting rules from an object of class "formula".
o The standalone Rmath library did not build correctly on systems
with inaccurate log1p.
o Specifying asp is now respected in calls like plot(1, 10, asp=1)
with zero range on both axes.
o outer() called rep() with an argument the generic does not
have, and discarded the class of the answer.
o object.size() now returns a real (not integer) answer and so
can cope with objects occupying more than 2Gb.
o Lookups base:: and ::: were not confining their search to the
named package/namespace.
o qbinom() was returning NaN for prob = 0 or 1 or size = 0 even
though the result is well-defined. (In part, PR#5900.)
o par(mgp)[2] was being interpreted as relative to par(mgp)[3].
(PR#6045)
o Versioned install was broken both with and without namespaces:
no R code was loaded.
o methods(), getS3method() and the registration of S3 methods in
namespaces were broken if the S3 generic was converted into an
S4 generic by setting an S4 method.
o Title and copyright holder of the reference manual are now in
sync with the citation() command.
o The validation code for POSIXlt dates and hence
seq(, by="DSTdays") now works for large mday values (not
just those in -1000...1000). (PR#6212)
o The print() method for data frames now copes with data frames
containing arrays (other than matrices).
o texi2dvi() and buildVignettes() use clean=FALSE as default
because the option is not supported on some Solaris
machines. For buildVignettes() this makes no difference as it
uses an internal cleanup mechanism.
o The biplot() method for "prcomp" was not registered nor exported.
(PR#6425)
o Latex conversion of .Rd files was missing newline before
\end{Section} etc which occasionally gave problems, as fixed for
some other \end{Foo} in 1.8.1. (PR#5645)
o Work around a glibc bug to make the %Z format usable in strftime().
o The glm method for rstandard() was wrongly scaled for cases where
summary(model)$dispersion != 1.
o Calling princomp() with a covariance matrix (rather than a
list) failed to predict scores rather than predict NA as
intended. (PR#6452)
o termplot() is more tolerant of variables not in the data= argument.
(PR#6327)
o isoreg() could segfault on monotone input sequences. (PR#6494)
o Rdconv detected \link{\url{}} only very slowly. (PR#6496)
o aov() with Error() term and no intercept incorrectly assigned
terms to strata. (PR#6510)
o ftable() incorrectly handled arguments named "x". (PR#6541)
o vector(), matrix(), array() and their internal equivalents
report correctly that the number of elements specified was too
large (rather than reporting it as negative).
o Minor copy-paste error in example(names). (PR#6594)
o length<-() now works correctly on factors (and is now generic
with a method for factors).
o x <- 2^32; x:(x+3) no longer generates an error (but gives a
result of type "double").
o pgamma(30, 100, lower=FALSE, log=TRUE) is not quite 0, now.
pgamma(x, alph) now only uses a normal approximation for
alph > 1e5 instead of alph > 1000. This also improves the accuracy
of ppois().
o qgamma() now does one or more final Newton steps, increasing
accuracy from around 2e-8 to 3e-16 in some cases. (PR#2214).
It allows values p close to 1 not returning Inf, with accuracy for
'lower=FALSE', and values close to 0 not returning 0 for
'log=TRUE'. These also apply to qchisq(), e.g.,
qchisq(1e-13, 4, lower=FALSE) is now finite and
qchisq(1e-101, 1) is positive.
o gamma(-n) now gives NaN for all negative integers -n.
o The Unix version of browseURL() now protects the URL from the
shell, for example allowing & and $ to occur in the URL.
It was incorrectly attempting to use -remote "openURL()" for
unknown browsers.
o extractAIC.coxph() works around an inconsistency in the
$loglik output from coxph. (PR#6646)
o stem() was running into integer overflows with nearly-constant
inputs, and scaling badly for constant ones. (Partly PR#6645)
o system() under Unix was losing the 8095th char if the output
was split. (PR#6624)
o plot.lm() gave incorrect results if there were zero weights.
(PR#6640)
o Binary operators warned for inconsistent lengths on vector op
vector operations, but not on vector op matrix ones. (PR#6633
and more.)