Hi, It's not enough to create a string with your instructions, it also needs to be evaluated as such. If you really wanted to evaluate your string, you'd need something like,
a <- b <- cc <- 1 # dummy example eval(parse(text = "cbind(a, b, cc)")) #library(fortunes) #fortune("parse") but fortune-ately, you probably oughtn't do that. Instead, I think you could use this example, d = data.frame(a1=1:10, b1=sin(1:10), c1 = cos(1:10)) # some data.frame variables = paste(letters[1:3],"1",sep="") # its variable names (alternatively, names(d) would do) ICC = function(x) x # your function ICC(d[ variables[ c(1, 3) ] ]) # apply the function to a subset of the data, by selecting the required columns (If I understood correctly your question) HTH, baptiste 2009/9/7 Helter Two <helter...@care2.com> > 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. > -- _____________________________ Baptiste AuguiƩ School of Physics University of Exeter Stocker Road, Exeter, Devon, EX4 4QL, UK http://newton.ex.ac.uk/research/emag ______________________________ [[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.