Hi all, The documentation for head() and tail() describes the behavior of these generic functions when n is strictly positive (n > 0) and strictly negative (n < 0). How these functions work when given a zero value is not defined.
Both GNU command-line utilities head and tail behave differently with +0 and -0: http://man7.org/linux/man-pages/man1/head.1.html http://man7.org/linux/man-pages/man1/tail.1.html Since R supports signed zeros (1/+0 != 1/-0) and the R head() and tail() functions are modeled after their GNU counterparts, I would expect the R functions to distinguish between +0 and -0 > tail(1:5, n=0) integer(0) > tail(1:5, n=1) [1] 5 > tail(1:5, n=2) [1] 4 5 > tail(1:5, n=-2) [1] 3 4 5 > tail(1:5, n=-1) [1] 2 3 4 5 > tail(1:5, n=-0) integer(0) # expected 1:5 > head(1:5, n=0) integer(0) > head(1:5, n=1) [1] 1 > head(1:5, n=2) [1] 1 2 > head(1:5, n=-2) [1] 1 2 3 > head(1:5, n=-1) [1] 1 2 3 4 > head(1:5, n=-0) integer(0) # expected 1:5 For both head() and tail(), I expected 1:5 as output but got integer(0). I obtained similar results using a data.frame and a function as x argument. An easy fix would be to explicitly state in the documentation what n = 0 does, and that there is no practical difference between -0 and +0. However, in my eyes, the better approach would be implement support for -0 and document it. What do you think? Best, Florent PS/ My sessionInfo() gives: R version 3.3.2 (2016-10-31) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1 locale: [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C LC_TIME=German_Switzerland.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel