[R] R: question about vectors + for loop

Douglas Bates bates at stat.wisc.edu
Sat Jun 5 17:45:16 CEST 1999

Maria Wolters <wolters at ikp.uni-bonn.de> writes:

> first of all: I'm not only new to R, but also to S.


> I hope this is the right forum for asking the  following
> very stupid questions:

This is the right forum and no question is considered stupid here
unless you already know the answer.

> a) is there a straightforward way of saying
>   for all factors f in a data frame {
>       any old function, e.g. max(f)
>   }

It is a little obscure but you can use lapply for that.  A data.frame
can take on the behavior of a list or of a matrix, depending on the
context.  A simple way of doing what you want is
 lapply( mydataframe, max )
That will return the result as a list.  You may find a vector to be
more appealing, in which case you can use
 unlist( lapply( mydataframe, max ) )

This assumes that max will be meaningful for all the columns of your
data frame.  It is best to check that first using, for example,
 unlist( lapply( mydataframe, data.class ) )
The max function would not make sense for a factor, for example.

You could also look at the output for
 summary( mydataframe )
which produces some brief summary statistics for numeric columns.
These include a "five-number summary" with the min, max, quartiles,
and median.

> b) how can you construct a new data frame d' from 
>    a given data frame d which contains only rows
>    with [X=="A"] (x is a factor of d)?
>    I know there's an obvious way, but with 50+ columns,
>    that's a wee bit tedious :) 

The indexing in the S family of languages is very flexible.  You can
use logical expressions for a "column" index with the matrix-like view
of a data.frame.  The expression would look like

 d.new <- d[ d$X == "A", ]      # that comma is important

> c) could it be possible that there's a bug in the implementation of 
>     the Kolmogorov-Smirnov test? 

Bugs?  R could have bugs?  You must be joking!  :-)

The bug list for R is available at http://r-bugs.biostat.ku.dk/R

You could check that to see if anything has been reported.  If not,
you could use the bug.report() function to submit a bug report.

Hope this helps.

--Doug Bates
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list