[R] help with writing function

Robert Burrows rbb at nebiometrics.com
Tue Dec 13 17:53:00 CET 2005


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 at nebiometrics.com




More information about the R-help mailing list