[R] Help with R: functions

Philippe Grosjean phgrosjean at sciviews.org
Mon Jan 30 14:36:53 CET 2006


# Here it is (using the formula interface):
dats <- data.frame(visual24 = rnorm(30, 3, 5),
                    visual52 = rt(30, 7))

st <- function(formula, data, ...) {
	# Just use the formula to specify which variables to use
	rcc <- coef(lm(formula, data))
	# Make sure to keep only variable used in the data frame
	plot(data[ , rev(all.vars(formula))])
	# Draw the line. Note the ... that allows to change
	#lines features
	abline(coef = rcc, ...)
	# Return the coefficients invisibly
	return(invisible(rcc))
}

st(visual52 ~ visual24, data = dats)
# Change style and color of the line (thanks to '...')
st(visual52 ~ visual24, data = dats, lty = 2, col = "red")

Best,

Philippe Grosjean


Pryseley Assam wrote:
> Hello R-users
>    
>   I am new to R and trying to write some functions. I have problems writing functions that takes a data set as an arguement and uses variables in the data. I illustrate my problem with a small example below:
>    
>    sample data   #------------------
>   visual24<-rnorm(30,3,5)
>   visual52<-rt(30,7)
>   dats<- data.frame(cbind(visual24,visual52))
>   remove(visual24, visual52)
>    
>   # first code
>   #--------------
>   st <-function(data,x,y){
>   rcc<-coef(lm(y~x))
>   plot(x,y)
>   abline(rcc[1],rcc[2])
>   }
>   st(data=dats,x=dats$visual24,y=dats$visual52)
>    
>   This code works fine, but with such a code the data as an arguement to the funtion is not necessary. 
>   However, i wish to write a function that reads the variables from the data directly.
>   I tried using the function below but it does not work. 
>    
>   # second code
>   #------------------
>   st <-function(data,x,y){
>   rcc<-coef(lm(data$y~data$x))
>   plot(data$x,data$y)
>   abline(rcc[1],rcc[2])
>   }
>   st(dats,visual24,visual52)
>    
>   I wish to inquire if any one has an idea of what i need to adjust in the function so that it works.
>   I believe that the referencing $x or $y in the function is not doing the correct thing.
>    
>   Better still, will it be a problem if i code the functions as in the first code above?
>   I mean given that they will be used to create a library
>    
>   Best regards
>   Pryseley
>    
> 
> 
> 		
> ---------------------------------
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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
> 
>




More information about the R-help mailing list