>>>>> "TP" == Tony Plate <tpl...@acm.org> >>>>> on Thu, 22 Jan 2009 11:01:21 -0700 writes:
TP> Martin Maechler wrote: >>>>>>> "TP" == Tony Plate <tpl...@acm.org> >>>>>>> on Fri, 16 Jan 2009 13:10:04 -0700 writes: >>>>>>> >> TP> Martin Maechler wrote: >> >>>>>>> "PatB" == Patrick Burns <pbu...@pburns.seanet.com> >> >>>>>>> on Tue, 13 Jan 2009 17:00:40 +0000 writes: >> >>>>>>> >> >> PatB> Henrik Bengtsson wrote: >> >> >> Hi. >> >> >> >> >> >> On Mon, Jan 12, 2009 at 11:58 PM, Prof Brian Ripley >> >> >> <rip...@stats.ox.ac.uk> wrote: >> >> >> >> >> >>> What you have is a one-dimensional array: they crop up >> >> >>> in R most often from table() in my experience. >> >> >>> >> >> >>> >> >> >>>> f <- table(rpois(100, 4)) str(f) >> >> >>>> >> >> >>> 'table' int [, 1:10] 2 6 18 21 13 16 13 4 3 4 - attr(*, >> >> >>> "dimnames")=List of 1 ..$ : chr [1:10] "0" "1" "2" "3" >> >> >>> ... >> >> >>> >> >> >>> and yes, f is an atmoic vector and yes, str()'s notation >> >> >>> is confusing here but if it did [1:10] you would not >> >> >>> know it was an array. I recall discussing this with >> >> >>> Martin Maechler (str's author) last century, and I've >> >> >>> just checked that R 2.0.0 did the same. >> >> >>> >> >> >>> The place in which one-dimensional arrays differ from >> >> >>> normal vectors is how names are handled: notice that my >> >> >>> example has dimnames not names, and ?names says >> >> >>> >> >> >>> For a one-dimensional array the 'names' attribute really >> >> >>> is 'dimnames[[1]]'. >> >> >>> >> >> >> >> >> >> Thanks for this explanation. One could then argue that >> >> >> [1:10,] is somewhat better than [,1:10], but that is just polish. >> >> >> >> yes. And honestly I don't remember anymore why I chose the >> >> "[,1:n]" notation. It definitely was there already before R >> >> came into existence, as S also has had one-dimensional arrays, >> >> and I programmed the first version of str() in 1990. >> >> PatB> Perhaps it could be: >> >> PatB> [1:10(,)] PatB> That is weird enough that it should not lead people to PatB> believe that it is a matrix. But might prompt them a PatB> bit in that direction. >> >> >> >> Well, str() was always aimed a bit at experienced S (and R) >> >> users, and I had always aimed somewhat to keep it's output >> >> "compact". I'm quite astonished that the OP didn't know about >> >> 1D arrays in spite of the many years he's been using R. >> >> Would a wierd solution like the above have helped? >> >> >> >> At the moment, I'd tend to keep it "as is" if only just for >> >> historical reminescence, but I can be convinced to change the >> >> current "tendency" ... >> >> >> >> Martin Maechler, ETH Zurich >> >> TP> What about just including "(1d-array)", something like this >> >> str(f) TP> 'table' int [1:10](1d array) 5 5 9 23 26 16 9 4 2 1 TP> - attr(*, "dimnames")=List of 1 TP> ..$ : chr [1:10] "0" "1" "2" "3" ... >> >> TP> only 9 extra characters for a rare case, and much, much less cryptic? >> >> well,.. the next text request is to use >> "character" instead of "chr", only 6 extra characters .... >> >> -> no way: str() has its very concise "style" and should keep that. >> TP> Brevity is good, but clarity is important too. The output of str is TP> usually decipherable, but not so much in this case. It's easy to TP> dismiss suggestions like replacing "chr" with "character" - the increase TP> in clarity would be minimal. However, the potential increase in clarity TP> for a 1-d array is significant - the decrease in brevity is at question TP> here. Given the rarity of the case it seems like a decent tradeoff to TP> add "(1d-array)" (one could even just write "(1d)"). 1-d arrays are TP> sufficiently rare that no concise and clear method of indicating them TP> using brackets or other symbols has arisen. You did say you "can be TP> convinced to change" it, but I won't attempt beyond this! :-) well, "still can be .." ..... So you currently propose to replace "int [,1:10] 5 5 9 23 26 16 9 4 2 1" by "int [1:10](1d) 5 5 9 23 26 16 9 4 2 1" where Pat had "int [1:10(,)] 5 5 9 23 26 16 9 4 2 1" Since the [.....] is where we specify the dimensionality of all arrays in str(), I'd like to try something where things remain inside "[....]" as with Pat's version or e.g., with "int [1:10/1d] 5 5 9 23 26 16 9 4 2 1" Opinions, further proposals ? Martin PatB> Patrick Burns patr...@burns-stat.com +44 (0)20 8525 PatB> 0696 http://www.burns-stat.com (home of "The R PatB> Inferno" and "A Guide for the Unwilling S User") >> >> >> /Henrik >> >> >> >> >> >> >> >> >>> I think these days we have enough internal glue in place >> >> >>> that an end user would not notice the difference (but >> >> >>> those working at C level with R objects may need to >> >> >>> know). >> >> >>> >> >> >>> On Mon, 12 Jan 2009, Henrik Bengtsson wrote: >> >> >>> >> >> >>> >> >> >>>> Ran into the follow intermediate case in an external >> >> >>>> package (w/ recent R v2.8.1 patched and R v2.9.0 >> >> >>>> devel): >> >> >>>> >> >> >>>> >> >> >>>>> x <- 1:2 dim(x) <- 2 dim(x) >> >> >>>>> >> >> >>>> [1] 2 >> >> >>>> >> >> >>>>> x >> >> >>>>> >> >> >>>> [1] 1 2 >> >> >>>> >> >> >>>>> str(x) >> >> >>>>> >> >> >>>> int [, 1:2] 1 2 >> >> >>>> >> >> >>>>> nrow(x) >> >> >>>>> >> >> >>>> [1] 2 >> >> >>>> >> >> >>>>> ncol(x) >> >> >>>>> >> >> >>>> [1] NA >> >> >>>> >> >> >>>>> is.vector(x) >> >> >>>>> >> >> >>>> [1] FALSE >> >> >>>> >> >> >>>>> is.matrix(x) >> >> >>>>> >> >> >>>> [1] FALSE >> >> >>>> >> >> >>>>> is.array(x) >> >> >>>>> >> >> >>>> [1] TRUE >> >> >>>> >> >> >>>>> x[1] >> >> >>>>> >> >> >>>> [1] 1 >> >> >>>> >> >> >>>>> x[,1] >> >> >>>>> >> >> >>>> Error in x[, 1] : incorrect number of dimensions >> >> >>>> >> >> >>>>> x[1,] >> >> >>>>> >> >> >>>> Error in x[1, ] : incorrect number of dimensions >> >> >>>> >> >> >>>> Is str() treating single-dimension arrays incorrectly? >> >> >>>> >> >> >>>> What does it mean to have a single dimension this way? >> >> >>>> Should it equal a vector? I am aware of "is.vector >> >> >>>> returns FALSE if x has any attributes except names". >> >> >>>> >> >> >>>> /Henrik >> >> >>>> >> >> >>>> ______________________________________________ >> >> >>>> R-devel@r-project.org mailing list >> >> >>>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >>>> >> >> >>>> >> >> >>> -- >> >> >> >>>> Brian D. Ripley, rip...@stats.ox.ac.uk Professor of Applied >> >>>> >> >> >>> Statistics, http://www.stats.ox.ac.uk/~ripley/ >> >> >>> University of Oxford, Tel: +44 1865 272861 (self) 1 >> >> >>> South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, >> >> >>> UK Fax: +44 1865 272595 >> >> >>> >> >> >>> ______________________________________________ >> >> >>> R-devel@r-project.org mailing list >> >> >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >>> >> >> >>> >> >> >> >> >> >> >>> ______________________________________________ >> >>> >> >> >> R-devel@r-project.org mailing list >> >> >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >> >> >> >> >> >> >> >> >> >> >> ______________________________________________ PatB> R-devel@r-project.org mailing list PatB> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >> >> ______________________________________________ >> >> R-devel@r-project.org mailing list >> >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >> >> >> TP> ______________________________________________ TP> R-devel@r-project.org mailing list TP> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel