I want to test in a programmatically way one rule generated from a tree. In the trees the path between the root and a leaf (terminal node) could be interpreted as a rule.
In R, we could use the rpart package and do the following:
(In this post, I will use the iris data set, for example purposes only)
library(rpart)
model <- rpart(Species ~ ., data=iris)
With this two lines I got a tree named model, whose class  is rpart.object (rpart documentation, page 21). This object has a lot of information, and supports a variety of methods.  In particular, the object has a frame variable (which can be accessed in the standard way: model$frame)(idem)  and the method path.rpath (rpart documentation, page  7), which gives you the path from the root node to the node of interest (node argument in the function)
The row.names of the frame variable contains the node numbers of the tree. The var column gives the split variable in the node, yval the fitted value and yval2 class probabilities and other information.
> model$frame
           var   n  wt dev yval complexity ncompete nsurrogate     yval2.1     yval2.2     yval2.3     yval2.4     yval2.5     yval2.6     yval2.7
1 Petal.Length 150 150 100    1       0.50        3          3  1.00000000 50.00000000 50.00000000 50.00000000  0.33333333  0.33333333  0.33333333
2       <leaf>  50  50   0    1       0.01        0          0  1.00000000 50.00000000  0.00000000  0.00000000  1.00000000  0.00000000  0.00000000
3  Petal.Width 100 100  50    2       0.44        3          3  2.00000000  0.00000000 50.00000000 50.00000000  0.00000000  0.50000000  0.50000000
6       <leaf>  54  54   5    2       0.00        0          0  2.00000000  0.00000000 49.00000000  5.00000000  0.00000000  0.90740741  0.09259259
7       <leaf>  46  46   1    3       0.01        0          0  3.00000000  0.00000000  1.00000000 45.00000000  0.00000000  0.02173913  0.97826087
But only  the marked as <leaf> in the var column are terminal nodes (leafs). In this case the nodes are 2, 6 and 7.
As mentioned above you can use the path.rpart method for extract a rule (this technique is used in the  rattle package and in the article Sharma Credit Score, as follows:
Aditionally, the model keeps the values of the predicted value in
predicted.levels <- attr(model, "ylevels")
This value correspond with the column yval in the model$frame data set.
For the leaf with node number 7 (row number 5), the predicted value is
> ylevels[model$frame[5, ]$yval]
[1] "virginica"
and the rule is
> rule <- path.rpart(model, nodes = 7)
 node number: 7 
   root
   Petal.Length>=2.45
   Petal.Width>=1.75
So, the rule could be read as
If Petal.Length >= 2.45 AND Petal.Width >= 1.75 THEN Species = Virginica
I know that I can test (in a testing data set, I will use the iris data set again) how many true positives I have for this rule, subsetting the new data set as follows
> hits <- subset(iris, Petal.Length >= 2.45 & Petal.Width >= 1.75)
and then calculating the confusion matrix
> table(hits$Species, hits$Species == "virginica")
             FALSE TRUE
  setosa         0    0
  versicolor     1    0
  virginica      0   45
(Note: I used the same iris data set as testing)
How I could evaluate the rule in a programmatically way? I could extract the conditions from the rule as follows
> unlist(rule, use.names = FALSE)[-1]
[1] "Petal.Length>=2.45" "Petal.Width>=1.75" 
But, how I can continue from here? I can not use the subset function 
Thanks in advance
NOTE: This question has been heavily edited for better clarity
 
     
     
    