[R] Break during the recursion?
Atte Tenkanen
attenka at utu.fi
Sun Jul 15 16:06:45 CEST 2007
Hi,
Is it possible to break using if-condition during the recursive function?
Here is a function which almost works. It is for inorder-tree-walk.
iotw<-function(v,i,Stack,Indexes) # input: a vector and the first index (1), Stack=c(), Indexes=c().
{
print(Indexes)
# if (sum(i)==0) break # Doesn't work...
if (is.na(v[i])==FALSE & is.null(unlist(v[i]))==FALSE)
{Stack=c(i,Stack); i=2*i; iotw(v,i,Stack,Indexes)}
Indexes=c(Indexes,Stack[1])
Stack=pop.stack(Stack)$vector
Indexes=c(Indexes,Stack[1])
i=2*Stack[1]+1
Stack=pop.stack(Stack)$vector
iotw(v,i,Stack,Indexes)
}
> v=c(`-`,`+`,1,`^`,`^`,NA,NA,"X",3,"X",2)
> Stack=c()
> Indexes=c()
> iotw(v,1,Stack,Indexes)
NULL
NULL
NULL
NULL
NULL
[1] 8 4
[1] 8 4
[1] 8 4 9 2
[1] 8 4 9 2
[1] 8 4 9 2
[1] 8 4 9 2 10 5
[1] 8 4 9 2 10 5
[1] 8 4 9 2 10 5 11 1
[1] 8 4 9 2 10 5 11 1
[1] 8 4 9 2 10 5 11 1 3
Error in if (is.na(v[i]) == FALSE & is.null(unlist(v[i])) == FALSE) { :
argument is of length zero
Regards,
Atte Tenkanen
University of Turku, Finland
More information about the R-help
mailing list