[R] r: functions

Clark Allan Allan at STATS.uct.ac.za
Thu Feb 24 10:16:33 CET 2005


hi all


i have a function that uses two inputs, say xdata and ydata. An example
is the following,

simple1<-function(xdata,ydata)
{
	ofit<-lm(ydata~xdata)
	list(ofit)
}

say i use arbitray number for xdata and ydata such that

D = 
x1	x2	y
1	1	10
2	6	6
3	10	7


x<-D[,1:2]

and 

y<-D[,3]

if one uses these inputs and rund the program we get the following:

>simple(xdata=x,ydata=y)
Error in model.frame(formula, rownames, variables, varnames, extras,
extranames,  : 
        invalid variable type

why does this happen!

i can get results if i change the program as follows:

simple2<-function(xdata,ydata)
{
	ofit<-lm(as.matrix(ydata)~as.matrix(xdata))
	list(ofit)
}

but then the variable names, if they exist, are not preserved. how can i
preserve these names.

the results are now:

> simple2(xdata=x,ydata=y)
[[1]]

Call:
lm(formula = as.matrix(ydata) ~ as.matrix(xdata))

Coefficients:
       (Intercept)  as.matrix(xdata)x1  as.matrix(xdata)x2  
                -6                  21                  -5  

i've tried converting xdata and ydata to data frames but i still get
errors.

simple3<-function(xdata,ydata)
{
	xdata<-as.data.frame(xdata)
	ydata<-as.data.frame(ydata)
	ofit<-lm(ydata~xdata)
	list(ofit)
}

i.e.

> simple3(xdata=x,ydata=y)
Error in model.frame(formula, rownames, variables, varnames, extras,
extranames,  : 
        invalid variable type

please help!

thanking you in advance

***
allan


More information about the R-help mailing list