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

______________________________________________
[email protected] 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.

Reply via email to