Variable number of loops
Hi all, Given the number of help requests that involve permutations/combinations, and the less than obvious naming of the expand.grid function, perhaps adding an alias such as "permute.elements" or "combine.elements" might ease the tasks of both searchers and those offering help. Neither of the above names appear to be used at present. Jim
On Sun, May 17, 2015 at 5:54 AM, Bert Gunter <gunter.berton at gene.com> wrote:
1. Please always reply to the list unless there is a compelling reason
to keep the discussion private. You will have a better chance of
getting something useful that way.
2. I don't know what you mean by "I don't have a fixed number of
variables." You have to specify at least the number of variables and
how many levels each has in order to work out what you requested,
which is **NOT** the number of permutations but the number of
combinations AFAICS, which is exactly what expand.grid will give you.
3. Maybe what you're looking for is the ... arguments in function
calls, which would be used along the lines of:
myfun <- function( x,y,...)
{
## some code
combs <- expand.grid(...)
## some more code
}
Any good R tutorial will tell you about this if this is unfamiliar.
4. Another possibility might be to deliver a list of named variables
as an argument and then use do.call, e.g.
myfun <- (x,y, alist)
{
## some code
combs <- do.call(expand.grid, alist)
## some more code
}
?do.call and/or a tutorial for details.
5. Otherwise, maybe someone else can figure out what you're looking for.
Cheers,
Bert
Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374
"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
Clifford Stoll
On Sat, May 16, 2015 at 11:16 AM, WRAY NICHOLAS
<nicholas.wray at ntlworld.com> wrote:
I might be but doesn't expand.grid need a defined and listed number of inputs? The problem I'm having is that the number of variables is not fixed, so I'm not sure whether I can reference the variable number of variables by using a vector -- haven't had time to try yet But thanks anyway Nick Wray On 16 May 2015 at 14:28, Bert Gunter <gunter.berton at gene.com> wrote:
Are you trying to reinvent ?expand.grid ? -- Bert Bert Gunter Genentech Nonclinical Biostatistics (650) 467-7374 "Data is not information. Information is not knowledge. And knowledge is certainly not wisdom." Clifford Stoll On Fri, May 15, 2015 at 1:40 PM, WRAY NICHOLAS <nicholas.wray at ntlworld.com> wrote:
I am trying to build a programme which will work out the permutations of
a
number of variables, eg a=0 to 1, b=0 to 1, and c=0 to 2, so
permutations
would be (0,0,0), (1,0,0), (0,1,0)... etc In this case there would be 2
x
2x 3 = 12 permutations. If the number of variables are fixed it's easy
to
loop round with nesting
However I don't have a fixed number of variables, so I have a variable
number of loops. I am trying to use a recursive function to do this and
have been building it up step-wise
I want to return a list of all the permutations at the end, but the
programme I have so ar doesn't return a full list, but just the first
element
2 things -- 1 I don't see why this is happening, and 2 is this the right
way to approach this problem? I cannot find find anything about this in
R
on the net
recursfunc1<-function(xf,shiftvecf,vlistf){
if(xf<4){
xf<-xf+1
vlistf[[length(vlistf)+1]]<-shiftvec[xf]
#print(paste(xf,"and",shiftvec[xf]))
print(vlistf)
#print(shiftvec[xf])
xf<-recursfunc1(xf,shiftvecf,vlistf)}
return(vlistf)}
shiftvec<-c(2,1,1,0)
vlist<-list()
perm<-recursfunc1(xf=0,shiftvecf=shiftvec,vlistf=vlist)
perm
I want perm to return the elements of shiftvec as a list so that I can
then
do all the permutations as the next stage, but it only returns the first
element of shiftvec
Thanks, Nick Wray
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.