[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