[R] repeating a function across a data frame
Petr PIKAL
petr.pikal at precheza.cz
Wed Aug 1 12:43:12 CEST 2012
Hi
did you find function dist? It seems that it can do directly what you
want.
Regards
Petr
>
> Hello everyone. Like others on this list, I'm new to R, and really not
much
> of a programmer, so please excuse any obtuse questions! I'm trying to
> repeat a function across all possible combinations of vectors in a data
> frame. I'd hugely appreciate any advice!
>
> Here's what I'm doing:
>
> I have some data: 40 samples, ~460 000 different readings between 1 and
0
> for each sample. I would like to make R spit out a matrix of distances
> between the samples. So far, I have made a function to calculate the
> distance between any two samples:
>
> DistanceCalc<-function(x,y){#x and y are both vectors - the entire
reading
> set for sample x and
> #sample y, respectively
> distance<-sqrt(sum((x-y).^2))
> distanceCorrected<-distance/sqrt(length(x))#to force the maximum
possible
> value to =1
> print(distanceCorrected)
> }
>
> The next thing I want to do is to make this function run to compare all
> possible combinations of my samples (1vs1, 1vs2, 1vs3...2vs1, 2vs2 etc).
In
> python, the only other programming language I have ever used, I would
just
> use a "for" loop. I have asked the internet how to do this, but the
> overwhelming response seems to be "you don't want to do it like that -
use
> the 'apply' functions". I've tried to use the apply functions, but I
tend
> to find that I can only give my DistanceCalc function a single vector (I
can
> tell it where to find x, but not where to find y, or vice versa). I've
also
> found the 'by' and the 'outer' functions, but I'm likewise failing at
making
> those work, e.g.
>
> >
distancetable<-outer(DataWithoutBlanks,DataWithoutBlanks,FUN=DistanceCalc)
> Error in x - y : non-numeric argument to binary operator
>
> I think this may be because my data has headers and the function is
trying
> to calculate the difference between the names of my samples, but I don't
> know how to correct this.
>
> Would really appreciate your help!
>
> Jen
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/repeating-a-
> function-across-a-data-frame-tp4638643.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list