[R] Re : calling combinations of variable names

2009-09-08 Thread justin bem
may be this can work 

testfun-function(x) {
  rval=
  k-length(x)
  for (i in 1: k) rval-paste(rval,x[i],sep=-)
  rval
}

v1-paste(evalr,1:4,sep=)
eval-expand.grid(w=v1,x=v1,y=v1,z=v1)
n-dim(eval)[1]

results-rep(, n)

for (i in 1:n) {
row-unique(unlist(eval[i,]))

if (length(row)=3) results[i]-testfun(row)
}

You just have to replace testfun by your own function in this case ICC.

Sincerly.

 Justin BEM
BP 1917 Yaoundé
Tél (237) 76043774





De : Helter Two helter...@care2.com
À : r-help@r-project.org
Envoyé le : Lundi, 7 Septembre 2009, 18h17mn 22s
Objet : [R] calling combinations of variable names

R-2.9.1, Windows7

Dear list,

I have a question to you that seems very simple to me, but I just can't
figure it out.
I have a dataframe called ratings which contains the following
variables: evalR1, evalR2, evalR3, evalR4, scoreR1, scoreR2, scoreR3,
scoreR4, opinionR1, opinionR2, opinionR3, opinionR4. (there are more
variables, but this gives an idea of the data structure). 

What I want is run several analyses on all 3 or 4-combinations of a
given variable. So, for example, I want to compute the following ICC's
(function from the psych package):
ICC(cbind(evalR1,evalR2, evalR3))
ICC(cbind(evalR1,evalR2, evalR4))
ICC(cbind(evalR1, evalR3, evalR4))
ICC(cbind(evalR2, evalR3, evalR4))
ICC(cbind(evalR1, evalR2, evalR3, eval4)).

I create a matrix containing the 3-combinations by combn(4,3). Now I
need to call the variables into the function. 
First, I tried paste as follows:
combis - combn(4,3) # this gives the 3-combinations
attach(ratings)
eval -
paste(evalR,combis[1,1],,evalR,combis[2,1],,evalR,combis[3,1],sep
=)
(this is of course just for 1 combination, as an example)
the output of this is evalR1,evalR2,evalR3, but when I run
ICC(cbind(eval)), an error message is given which is not given when I
enter ICC(cbind(evalR1,evalR2, evalR3)) manually. The function appears
not to recognize the variable names. It also does not work to type
ICC(cbind(unquote(eval))).
Alternatively, I have tried the cat function, but also here ICC does not
recognize the input as variable names. 

What am I doing wrong? How can I automatically construct the set of
variable names such that a function recognizes them as variable names?
ICC is one example, but there are also other computations to be run and
the set of variables is pretty large, so typing the combinations of
variable names manually is really unattractive.

What am I missing? It seems to me that there probably is a very simple
solution in R, but which?

Thank you,
Peter Verbeet


[[alternative HTML version deleted]]

__
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.



  
[[alternative HTML version deleted]]

__
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] Re : calling combinations of variable names

2009-09-08 Thread Helter Two

Thanks to Justin, Baptiste, and Sebed for your answers.
The solutions work well. I have been putting them to good use today: the
code now works wonderfully and I learnt some useful tricks!

thanks, Peter


-Original Message- 
From: justin bem [justin_...@yahoo.fr]
Sent: 9/8/2009 9:06:23 AM
To: helter...@care2.com
Cc: r-h...@stat.math.ethz.ch
Subject: Re: Re : [R] calling combinations of variable names

may be this can work 

testfun-function(x) {
 rval=
 k-length(x)
 for (i in 1: k) rval-paste(rval,x[i],sep=-)
 rval
}

v1-paste(evalr,1:4,sep=)
eval-expand.grid(w=v1,x=v1,y=v1,z=v1)
n-dim(eval)[1]

results-rep(, n)

for (i in 1:n) {
 row-unique(unlist(eval[i,]))

 if (length(row)=3) results[i]-testfun(row)
}

You just have to replace testfun by your own function in this case ICC.

Sincerly...

 
Justin BEM
BP 1917 Yaoundé
Tél (237) 76043774






De : Helter Two helter...@care2.com
À : r-help@r-project.org
Envoyé le : Lundi, 7 Septembre 2009, 18h17mn 22s
Objet : [R] calling combinations of variable names

R-2.9.1, Windows7

Dear list,

I have a question to you that seems very simple to me, but I just can't
figure it out.
I have a dataframe called ratings which contains the following
variables: evalR1, evalR2, evalR3, evalR4, scoreR1, scoreR2, scoreR3,
scoreR4, opinionR1, opinionR2, opinionR3, opinionR4. (there are more
variables, but this gives an idea of the data structure). 

What I want is run several analyses on all 3 or 4-combinations of a
given variable. So, for example, I want to compute the following ICC's
(function from the psych package):
ICC(cbind(evalR1,evalR2, evalR3))
ICC(cbind(evalR1,evalR2, evalR4))
ICC(cbind(evalR1, evalR3, evalR4))
ICC(cbind(evalR2, evalR3, evalR4))
ICC(cbind(evalR1, evalR2, evalR3, eval4)).

I create a matrix containing the 3-combinations by combn(4,3). Now I
need to call the variables into the function. 
First, I tried paste as follows:
combis - combn(4,3) # this gives the 3-combinations
attach(ratings)
eval -
paste(evalR,combis[1,1],,evalR,combis[2,1],,evalR,combis[3,1],se
p
=)
(this is of course just for 1 combination, as an example)
the output of this is evalR1,evalR2,evalR3, but when I run
ICC(cbind(eval)), an error message is given which is not given when I
enter ICC(cbind(evalR1,evalR2, evalR3)) manually. The function appears
not to recognize the variable names. It also does not work to type
ICC(cbind(unquote(eval))).
Alternatively, I have tried the cat function, but also here ICC does
not
recognize the input as variable names. 

What am I doing wrong? How can I automatically construct the set of
variable names such that a function recognizes them as variable names?
ICC is one example, but there are also other computations to be run and
the set of variables is pretty large, so typing the combinations of
variable names manually is really unattractive.

What am I missing? It seems to me that there probably is a very simple
solution in R, but which?

Thank you,
Peter Verbeet


 [[alternative HTML version deleted]]

__
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. 

[[alternative HTML version deleted]]

__
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.