Skip to content

taking rows from a data frame

3 messages · Lei Jiang, Bill Oliver, Brian Ripley

#
hi, there.

Here is my problem. I have a data frame by read.table(). I want to take
every row from this data frame and compute the correlation between the
current row and a fixed vector. finally I want to append the correlation
computed as a column to the data frame.

this is what i am doing.
df<-read.delim("filename", col.names=v)
myv<-c(....)#this is my vector that I need to compute cor with
corv<-cor(t(df[,c(..)]), myv, use="complete.obs") #only use c(..) in df

the values I got from corv doesnt seem to be right when I tried to verify
them. the way i am doing this is probably not very smart or totally wrong.
Can someone help?

thanks very much.

Lei

Department of Chemsitry
University of Washington
Box 351700
Seattle, WA 98195
Phone: 206-543-4428
Fax: 206-685-8665








-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
Lei Jiang wrote:
Perhaps the following would do the trick.

df$corv <- apply(df,1,function(x) cor(x,myv,use="complete.obs"))

-Bill


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
Let's be careful.  You cannot in general compute the correlation between
`a row of a data frame and a vector'.  The columns of a data frame can be
of different types, so this is only possible if they are all numeric (or
integer or complex).  It would be better to use a matrix, and that is what
apply does implicitly (as.matrix).  However, it would be safer to do the
conversion yourself and check you get a numeric matrix back.

Contrast data.matrix() and as.matrix() and consider which you want.

If the matrix has many rows there are more efficient ways to do this via
matrix operations.
On Wed, 20 Nov 2002, Bill Oliver wrote: