[R] apply problem
ggrothendieck@yifan.net
ggrothendieck at yifan.net
Sun Mar 17 17:03:38 CET 2002
> > > > > apply(iris3,1,function(x)identical(x,iris3[1,]))
> > > > 1 2 3
> > > > FALSE FALSE FALSE
> > > >
> > > > What's wrong here?
> > >
> > > iris3 is not an array, so it it coerced to one via as.matrix
> > [...]
> > > and that's not the same object as your iris3
> >
> > Is there a way to iterate over the rows of a data
> > frame without writing a loop -- that was my
> > original objective.
>
> No. A row of a data frame is still a data frame and therefore arbitrarily
> complex.
OK. Efficiency aside,I believe it would still be nice to have this ability
for compactness. Here are some ideas:
1. Have an option on t(), the transpose function, that specifies
that it should return a list of one row data frames. The above
becomes:
sapply( t(iris3,list.out=T), function(x) identical( x, iris3[1,] ) )
2. Allow dist() to have two arguments and a distance function that is 0
for identical rows and 1 for others (or even allow user specifiable
distance functions). The above becomes:
dist(iris3[1,],iris3,method="identical")
or with user specifiable distance functions:
dist(iris3[1,],iris3,user.method=identical)
3. Have a right crossprod such that crossprod(a,b,right=T) is the
same as a+.*t(b) and also user specifiable inner products:
crossprod(iris3,iris3[1,],inner.prod=identical)
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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