[R] How to show variables used in lm function call?

Gabor Grothendieck ggrothendieck at gmail.com
Tue Feb 3 18:34:38 CET 2009


Pick off the names in the first two lines of the function body
and then paste them into a formula, converting to a real
formula object and then make your call:

mylm <- function(dep, indep, env = parent.frame()) {
	depnm <- deparse(substitute(dep))
	indepnm <- deparse(substitute(indep))
	fo <- sprintf("%s ~ lag(%s, -1) + %s", depnm, depnm, indepnm)
	fo <- as.formula(fo, env = env)
	do.call(dyn$lm, list(fo))
}

library(dyn)
x <- zoo(1:10)
y <- x*x
mylm(y, x)


On Tue, Feb 3, 2009 at 12:16 PM, Pele <drdionc at yahoo.com> wrote:
>
> Hello R users,
>
> I am new to R and am wondering if anyone can help me out
> with the following issue: I wrote a function to build ts models using
> different inputs, but when R displays the call for a model, I cannot tell
> which variables
> it is using because it shows the arguments instead of the real variables
> passed to the function.
>
> (e.g
>
> Call:
> lm(formula = dyn(dep ~ lag(dep, -1) + indep)) ---> not what I want to see
>
> lm(formula = dyn(Y ~ lag(Y, -1) + XVARY))   -----> this is what I want to
> see
>
>
> (see simplified version of the code and output below)
>
> Thanks in advance for any help!!
>
>
>
> options (scipen=999, digits=7)
>
> library(Hmisc)
> library(DAAG)
> library(car)
> library(MASS)
> library(nlme)
> library(dyn)
> library(zoo)
>
> tdata <- ts(read.table("C:/R/testing/data.csv" ,sep = ",",header=TRUE))
> print(tdata)
>
> coeff <- function(dep, indep) {
>  mod    <- dyn$lm(dep ~ lag(dep, -1)+ indep)
>  summ   <- summary(mod)
>  res    <- list(COEF=summ)    }
>
>  out    <- coeff(tdata[ ,"Y"], tdata[ ,"XVARY"]); out
>
> #########output#############
>
>>  print(tdata)
> Time Series:
> Start = 1
> End = 20
> Frequency = 1
>   Unit  Y XVARY  K DWAY
>  1    1  3     2  4   50
>  2    2  5     3  9   50
>  3    3  6    11 22   50
>  4    4  8     4  7    2
>  5    5  9    11 11    2
>  6    6 12    13 13    2
>  7    7 23    25 12    2
>  8    8 22    30 31    3
>  9    9 23     3  3    3
> 10   10 19    21 21   32
> 11   11  3     2  4   34
> 12   12  5     3  9    4
> 13   13  6    11 22    4
> 14   14  8     4  7    4
> 15   15  9    11 11    4
> 16   16 12    13 13    4
> 17   17 23    25 12    4
> 18   18 22    30 31    4
> 19   19 23     3  3    4
> 20   20 19    21 21    5
>>
>>    coeff <- function(dep, indep) {
> +
> +    mod    <- dyn$lm(dep ~ lag(dep, -1)+ indep)
> +    summ   <- summary(mod)
> +    res    <- list(COEF=summ) }
>>
>> out       <- coeff(tdata[ ,"Y"], tdata[ ,"XVARY"]); out
> $COEF
>
> Call:
> lm(formula = dyn(dep ~ lag(dep, -1) + indep))
>
> Residuals:
>     Min       1Q   Median       3Q      Max
> -10.7157  -2.5454  -0.2090   0.8359   7.3292
>
> Coefficients:
>             Estimate Std. Error t value Pr(>|t|)
> (Intercept)    2.6473     2.1952   1.206  0.24538
> lag(dep, -1)   0.5506     0.1558   3.535  0.00275 **
> indep          0.3033     0.1259   2.408  0.02845 *
> ---
> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> Residual standard error: 4.643 on 16 degrees of freedom
>  (2 observations deleted due to missingness)
> Multiple R-squared: 0.6679,     Adjusted R-squared: 0.6264
> F-statistic: 16.09 on 2 and 16 DF,  p-value: 0.0001479
>
> --
> View this message in context: http://www.nabble.com/How-to-show-variables-used-in--lm-function-call--tp21814443p21814443.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list