[Rd] split() bug? Inconsistent Windows/Linux behavior.
Jay Emerson
jayemerson at gmail.com
Tue May 4 22:37:36 CEST 2010
I didn't see anything on this in the bug reports, and a search of the
archives had lots of false positives when searching on "split" to be
helpful.
I don't view this as particularly interesting or useful, but wanted to
report it because I stumbled on it (and don't remember ever seeing
"invalid permissions" as part of a segfault). Yes, I realize this is
a silly example that you wouldn't actually do, but... there may be
other more interesting cases with the same problem. The following was
R-2.10.0 on Linux (with a Windows-64 2.11.0 difference to follow
below):
> data(iris)
> split(1:nrow(iris), list(iris[,1], iris[,2]))
*** caught segfault ***
address 0x7fc806cd3d0c, cause 'invalid permissions'
Traceback:
1: split.default(1:nrow(iris), list(iris[, 1], iris[, 2]))
2: split(1:nrow(iris), list(iris[, 1], iris[, 2]))
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
In contrast, R-2.11.0 in Windows-64:
> data(iris)
> split(1:nrow(iris), list(iris[,1], iris[,2]))
Traceback:
1: split.default(1:nrow(iris), list(iris[, 1], iris[, 2]))
2: split(1:nrow(iris), list(iris[, 1], iris[, 2]))
Error in split.default(1:nrow(iris), list(iris[, 1], iris[, 2])) :
caught access violation - continue with care
However, the same commands with drop=TRUE returns something, though
the answers differ. In Linux:
> a <- split(1:nrow(iris), list(iris[,1], iris[,2]), drop=TRUE)
> length(a)
[1] 116
And in Windows, differing only in the extra returned element, which I
don't think should probably be part of the answer (there are no
missing values in the iris data):
> a <- split(1:nrow(iris), list(iris[,1], iris[,2]), drop=TRUE)
> length(a)
[1] 117
> a[117]
$<NA>
[1] 16
--
John W. Emerson (Jay)
Associate Professor of Statistics
Department of Statistics
Yale University
http://www.stat.yale.edu/~jay
More information about the R-devel
mailing list