[R] Replies on this list [was: removing NA from a data frame]

François Pinard pinard at iro.umontreal.ca
Mon Mar 20 22:03:15 CET 2006

[Berton Gunter]
>[Sam Steingold]

>> PPS. how do I figure out the number of rows in a data.frame?
>>      is length(attr(X,"row.names")) the right way?

>help.search("number of rows") immediately gets you your answer!

Hi, people.  Here, I get:

  Help files with alias or concept or title matching ‘number of rows’
  using fuzzy matching:

  nrow(base)              The Number of Rows/Columns of an Array

and '?nrow' says that it meant for arrays: nothing about data.frame, and 
not a generic method either.  Even if it was a class method, we should 
not expect a new user to be very familiar with R (both!) class systems 
from the start.

What a new user might think, reading the documentation?   Sam Steingold 
is surely an experimented and competent computer guy.  He might guess, 
who knows, that some automatic array to data.frame conversion occurs 
(all inefficient that it could be).  Yet this would not match other 
knowledge nor experimentation, as a data.frame is hardly an array:

  > x = data.frame(a=1:3, b=c(TRUE, TRUE, FALSE), c=letters[1:3])
  > as.array(x)
  Erreur dans "dimnames<-.data.frame"(`*tmp*`, value = list(c("a", "b", "c" :
          'dimnames' incorrect pour ce tableau de données

Despite help.search("number of rows") provides an answer that happens to 
be right, it might not be recognised as such by an intelligent reader, 
and so, it is not really satisfactory.  The documentation for "nrow" 
could be improved by saying that it applies to any kind of structure for 
which dim() is meaningful.  And even then, ?dim is silent about data 
frames.  One clue (yet a pretty weak one) that nrow may be applied to 
a data.frame comes from the fact that ?dim.data.frame lists the same 
documentation as ?dim.

Why do I say all this?  Because it happens, not necessarily in this 
case, a bit too often nevertheless, that answers given to users are 
uselessly harsh or haughty.  Especially when they imply that the 
documentation is perfect.  One problem is that some people enjoy reading 
such replies.  As example of this strange kind of pleasure, here is 
a excerpt from R Archives, which I find especially enlightening on the 
mentality of few members:

  From: swis at mantrade.com (Steve Wisdom)
  Date: 2003-12-26 17:04
  Subject: [R] re| Dr Ward on List protocol 

  "Andrew C. Ward" <acward at uqconnect.net.au> :

  >With respect to 'tone' and 'friendliness', perhaps all that is meant or
  >needed is that people be polite and respectful.

  >I shake my head as often at rude answers

  Oh, by gosh, by golly.

  I don't think an occasional dose of 'real life', via a jab from the
  Professor, will cause any lasting harm to the cosseted & emolumated students
  and academics on the List.

  On a Wall St trading desk, for example, every day one is kicked in the head
  more brutally by clients, superiors, counterparts, the markets & etc, than
  ever one would be by the Professor.

  Plus, the Professor's jabs are good Schadenfreudic fun for the rest of us.


  Steve Wisdom
  Westport CT US

The truth is that not everybody around here is "cosseted & emolumated 
students and academics".  Moreover, behaviour at trading desks is fully 
irrelevant, and for most of us, this is not the kind of life we chose to 
live.  Wrong behaviour elsewhere is hardly an excuse for not behaving 
properly, here.

Moreover, what is mere "good fun" for some may be perceived as highly 
inelegant by others.  While some competent members may inspire 
admiration and charism by their knowledge and dedication, they sometimes
damage beyond repair what they inspire, when showing poor humanity.

I'm aware of the constant fear some have of seeing this list abused.  
There are ways for not being abused, which do not require becoming 
abusive ourselves.  We should deepen such ways in our own habits.

François Pinard   http://pinard.progiciels-bpi.ca

More information about the R-help mailing list