[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