Re: [R] help with writing function

From: Robert Burrows <rbb_at_nebiometrics.com>
Date: Wed 14 Dec 2005 - 03:53:00 EST

On Tue, 13 Dec 2005, Oarabile Molaodi wrote:

> I'm trying to write a function that takes a vector of length n and then
> takes the first value of the vector i.e j=1 and forms a new vector of
> length n (i.e replicate the first value n times). This function will
> then calculate the absoulte difference of the original vector and the
> new vector and store the results omitting the difference between the
> value and itself. This function should be able to repeat the procedure
> for each of the j's i.e j=2 to n. The results should all be stored
> together. Below is what I've tried so far but it seems to work only for
> j=1 .
>
> Your help will be highly appreciated.
> IED<-function(risk){
> n<-length(risk)
> i<-c(1:n)
> Diff<-numeric()
> for(j in 1:n){
> relrisk<-risk
> relrisk[i]<-relrisk[j]
> Difference<-abs(risk-relrisk)
> Difference<-Difference[-c(1:j)]
> Difference<-append(Diff,Difference)
> return(Difference)
> }
> }

How about

"IED" <-
function(risk){
  n<-length(risk)
Diff<-numeric(n)
for(j in 1:n){
relrisk<-rep(risk[j],n)
Diff[j]<-sum(abs(risk-relrisk)[-j])
}
Diff
}

-- 
Robert Burrows, PhD
New England Biometrics
rbb@nebiometrics.com

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Wed Dec 14 05:23:18 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:41:36 EST