araastat / reprtree

Representative trees from ensembles
41 stars 33 forks source link

Impossible to plot the tree #10

Open Visign opened 7 years ago

Visign commented 7 years ago

Hello !

I tried to use the function reprtree:::plot.getTree(my_model) but it is not working and I have the following message: "Error in row.names<-.data.frame(*tmp*, value = strtoi(x, 2)) : duplicate 'row.names' are not allowed In addition: Warning message: non-unique values when setting 'row.names': "

I tried to display my trees with the following lines of code: rf11_100<-randomForest(Bid~., data=df11, ntree=100, proximity=TRUE) reprtree:::plot.getTree(rf11_100,3,labelVar=TRUE)

(3 is just to get the display of the tree number 3).

Let me know if you need anything else.

Thanks for your help !

Visign

JowitaOsinga commented 6 years ago

I have exactly the same issue! But still no luck in finding a solution!

migli commented 3 years ago

I have the same error. I narrowed it down to the as.tree function which invokes the following line:

row.names(fr) <- strtoi(x, 2)

For reasons that I don't fully understand, x ends up having 32 binary digits. This ends up in an integer overflow for strtoi which simply returns NA. Since I'm having more than one NA, assigning it to names will trigger the duplicate error.

Here is an example of what I mean:

strtoi("11101100111010000101010011011100", 2)
# [1] NA

I'd suggest converting it to decimal instead in order to avoid integer overflow. But I'm not sure if the integer type is required down the hill.