[R] A printing macro

2006-11-13 Thread Murray Jorgensen
I am exploring the result of clustering a large multivariate data set 
into a number of groups, represented, say, by a factor G.

I wrote a function to see how categorical variables vary between groups:

   ddisp - function(dvar) {
+  csqt - chisq.test(G,dvar)
+  print(csqt$statistic)
+  print(csqt$observed)
+  print(round(csqt$expected))
+  round(csqt$residuals)
+  }
 
   x - ceiling(4*runif(100))
   G - gl(4,1,100)
   ddisp(x)
X-squared
  6.235645
dvar
G1  2  3  4
   1 10  5  5  5
   2  6  9  5  5
   3  8  6  5  6
   4  7  4  4 10
dvar
G   1 2 3 4
   1 8 6 5 6
   2 8 6 5 6
   3 8 6 5 6
   4 8 6 5 6
dvar
G1  2  3  4
   1  1  0  0 -1
   2 -1  1  0 -1
   3  0  0  0  0
   4  0 -1  0  1
Warning message:
Chi-squared approximation may be incorrect in: chisq.test(G, dvar)

As I need to apply this function to a large number of variables x it 
would be helpful if the function printed x rather than the formal 
argument dvar. I have a vague idea that things like deparse() and 
substitute() will come into the solution but I have not yet come up with 
the right incantation. Any help appreciated!

Murray Jorgensen

-- 
Dr Murray Jorgensen  http://www.stats.waikato.ac.nz/Staff/maj.html
Department of Statistics, University of Waikato, Hamilton, New Zealand
Email: [EMAIL PROTECTED]Fax 7 838 4155
Phone  +64 7 838 4773 wkHome +64 7 825 0441Mobile 021 1395 862

__
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
and provide commented, minimal, self-contained, reproducible code.


Re: [R] A printing macro

2006-11-13 Thread Murray Jorgensen

Thanks for these suggestions, Professor Ripley. It's interesting that
the function parameters in R are not truly dummy as they can effect
the result of a function.

Murray

Prof Brian Ripley wrote:
 ddisp - function(dvar) {
 yn - substitute(dvar)
 csqt - eval.parent(substitute(chisq.test(G,dvar), list(dvar=yn)))
 
 }
 
 There are other ways, such as forming the cross-classification table, 
 setting its dimnames and passing that to chisq.test.
 
 On Mon, 13 Nov 2006, Murray Jorgensen wrote:
 
 I am exploring the result of clustering a large multivariate data set
 into a number of groups, represented, say, by a factor G.

 I wrote a function to see how categorical variables vary between groups:

   ddisp - function(dvar) {
 +  csqt - chisq.test(G,dvar)
 +  print(csqt$statistic)
 +  print(csqt$observed)
 +  print(round(csqt$expected))
 +  round(csqt$residuals)
 +  }
 
   x - ceiling(4*runif(100))
   G - gl(4,1,100)
   ddisp(x)
 X-squared
  6.235645
dvar
 G1  2  3  4
   1 10  5  5  5
   2  6  9  5  5
   3  8  6  5  6
   4  7  4  4 10
dvar
 G   1 2 3 4
   1 8 6 5 6
   2 8 6 5 6
   3 8 6 5 6
   4 8 6 5 6
dvar
 G1  2  3  4
   1  1  0  0 -1
   2 -1  1  0 -1
   3  0  0  0  0
   4  0 -1  0  1
 Warning message:
 Chi-squared approximation may be incorrect in: chisq.test(G, dvar)

 As I need to apply this function to a large number of variables x it
 would be helpful if the function printed x rather than the formal
 argument dvar. I have a vague idea that things like deparse() and
 substitute() will come into the solution but I have not yet come up with
 the right incantation. Any help appreciated!

 Murray Jorgensen


 

-- 
Dr Murray Jorgensen  http://www.stats.waikato.ac.nz/Staff/maj.html
Department of Statistics, University of Waikato, Hamilton, New Zealand
Email: [EMAIL PROTECTED]Fax 7 838 4155
Phone  +64 7 838 4773 wkHome +64 7 825 0441Mobile 021 1395 862


-- 
Dr Murray Jorgensen  http://www.stats.waikato.ac.nz/Staff/maj.html
Department of Statistics, University of Waikato, Hamilton, New Zealand
Email: [EMAIL PROTECTED]Fax 7 838 4155
Phone  +64 7 838 4773 wkHome +64 7 825 0441Mobile 021 1395 862

__
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
and provide commented, minimal, self-contained, reproducible code.