[R] Using eval in multinom argument

2009-02-16 Thread Crouch, Daniel
Hi,

I am having difficulty entering a 'programmable' argument into the multinom 
function from the nnet package. Interactively, I can get the function to work 
fine by calling it this way:

z1=multinom(formula = class.ind(grp[-outgroup])~ (PC1 + PC2 + PC3), 
data=data.frame(scores))

However I need to be able to change the number of variables I am looking for in 
'scores' and so am trying to call it this way...

z1=multinom(formula = class.ind(grp[-outgroup])~ eval(parse(text=PCnames)), 
data=data.frame(scores))

...where, for example, PCnames = c("PC1", "+",   "PC2", "+",   "PC3")   

This gives no error messages, but only the last variable (in this case PC3) 
gets considered in the model. z1 looks like this:

  (Intercept) eval(parse(text = PCnames))
23.530352  -116.87140
3   -1.30861313.59134
43.662172   -57.52198
5   -1.216041  -242.38827
6   -9.377894  -367.71614
7   -3.145738  -286.19766

Rather than this:

  (Intercept)   PC1PC2   PC3
2   288.97131   889.281  3776.5837 -2105.751
3  -712.53519  2775.663  8490.5724  8602.834
4   229.17772  4234.950   329.6995 -2182.238
585.54585 -3036.657  3968.2517 -3450.070
6  -676.55377 -9545.785  2422.5340 -7183.686
7  -631.91921 10997.432 -3310.2905 -5348.513

Any help would be much appreciated.

Thanks,
Daniel Crouch


Daniel Crouch
Research Student
Department of Medical & Molecular Genetics
King's College London
8th Floor, Tower Wing
Guy's Hospital
London SE1 9RT
United Kingdom
__
R-help@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.


Re: [R] Using eval in multinom argument

2009-02-16 Thread Charles C. Berry



Forget eval(parse(text = ))

See

?as.formula
?update.formula

and try out the example() s there.

HTH,

Chuck




On Mon, 16 Feb 2009, Crouch, Daniel wrote:


Hi,

I am having difficulty entering a 'programmable' argument into the multinom 
function from the nnet package. Interactively, I can get the function to work 
fine by calling it this way:

z1=multinom(formula = class.ind(grp[-outgroup])~ (PC1 + PC2 + PC3), 
data=data.frame(scores))

However I need to be able to change the number of variables I am looking for in 
'scores' and so am trying to call it this way...

z1=multinom(formula = class.ind(grp[-outgroup])~ eval(parse(text=PCnames)), 
data=data.frame(scores))

...where, for example, PCnames = c("PC1", "+",   "PC2", "+",   "PC3")

This gives no error messages, but only the last variable (in this case PC3) 
gets considered in the model. z1 looks like this:

 (Intercept) eval(parse(text = PCnames))
23.530352  -116.87140
3   -1.30861313.59134
43.662172   -57.52198
5   -1.216041  -242.38827
6   -9.377894  -367.71614
7   -3.145738  -286.19766

Rather than this:

 (Intercept)   PC1PC2   PC3
2   288.97131   889.281  3776.5837 -2105.751
3  -712.53519  2775.663  8490.5724  8602.834
4   229.17772  4234.950   329.6995 -2182.238
585.54585 -3036.657  3968.2517 -3450.070
6  -676.55377 -9545.785  2422.5340 -7183.686
7  -631.91921 10997.432 -3310.2905 -5348.513

Any help would be much appreciated.

Thanks,
Daniel Crouch


Daniel Crouch
Research Student
Department of Medical & Molecular Genetics
King's College London
8th Floor, Tower Wing
Guy's Hospital
London SE1 9RT
United Kingdom
__
R-help@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.



Charles C. Berry(858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cbe...@tajo.ucsd.edu   UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901

__
R-help@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.


Re: [R] Using eval in multinom argument

2009-02-17 Thread Crouch, Daniel
Thanks for your help,

I managed to get it working like this:

fml<-as.formula(paste("y ~", paste(PCnames, collapse="+")))
y = class.ind(grp[outgroup])
z1=multinom(formula = fml, data=data.frame(scores))

Daniel Crouch



**QUOTE:
Forget eval(parse(text = ))

See

?as.formula
?update.formula

and try out the example() s there.

HTH,

Chuck




On Mon, 16 Feb 2009, Crouch, Daniel wrote:

> > Hi,
> >
> > I am having difficulty entering a 'programmable' argument into the multinom 
> > function from the nnet package. Interactively, I can get the function to 
> > work fine by calling it this way:
> >
> > z1=multinom(formula = class.ind(grp[-outgroup])~ (PC1 + PC2 + PC3), 
> > data=data.frame(scores))
> >
> > However I need to be able to change the number of variables I am looking 
> > for in 'scores' and so am trying to call it this way...
> >
> > z1=multinom(formula = class.ind(grp[-outgroup])~ eval(parse(text=PCnames)), 
> > data=data.frame(scores))
> >
> > ...where, for example, PCnames = c("PC1", "+",   "PC2", "+",   "PC3")
> >
> > This gives no error messages, but only the last variable (in this case PC3) 
> > gets considered in the model. z1 looks like this:
> >
> >  (Intercept) eval(parse(text = PCnames))
> > 23.530352  -116.87140
> > 3   -1.30861313.59134
> > 43.662172   -57.52198
> > 5   -1.216041  -242.38827
> > 6   -9.377894  -367.71614
> > 7   -3.145738  -286.19766
> >
> > Rather than this:
> >
> >  (Intercept)   PC1PC2   PC3
> > 2   288.97131   889.281  3776.5837 -2105.751
> > 3  -712.53519  2775.663  8490.5724  8602.834
> > 4   229.17772  4234.950   329.6995 -2182.238
> > 585.54585 -3036.657  3968.2517 -3450.070
> > 6  -676.55377 -9545.785  2422.5340 -7183.686
> > 7  -631.91921 10997.432 -3310.2905 -5348.513
> >
> > Any help would be much appreciated.
> >
> > Thanks,
> > Daniel Crouch
> >
> >
> > Daniel Crouch
> > Research Student
> > Department of Medical & Molecular Genetics
> > King's College London
> > 8th Floor, Tower Wing
> > Guy's Hospital
> > London SE1 9RT
> > United Kingdom
> > __
> > R-help@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.
> >

Charles C. Berry(858) 534-2098
 Dept of Family/Preventive Medicine
E mailto:cbe...@tajo.ucsd.edu   UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901





Daniel Crouch
Research Student
Department of Medical & Molecular Genetics
King's College London
8th Floor, Tower Wing
Guy's Hospital
London SE1 9RT
United Kingdom
__
R-help@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.