Re: [R] Help with R: functions

From: Philippe Grosjean <phgrosjean_at_sciviews.org>
Date: Tue 31 Jan 2006 - 00:36:53 EST

# 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@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
>
>



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 Tue Jan 31 00:57:58 2006

This archive was generated by hypermail 2.1.8 : Tue 31 Jan 2006 - 02:21:53 EST