2

我试图在使用时获取树的拆分变量列表ctree

我找到了一种使用 psplit 获取特定节点的特定拆分变量的方法。但我想获得整个树中分裂变量的整个列表。

有什么简单的获取方法吗?

4

2 回答 2

1

这将完成这项工作

SplittedNames <- function(ctemp ) {
  intnodes <- unique(where(ctemp))
  intnodes <- sort(intnodes)
  diffnodes <- seq(1:intnodes[length(intnodes)])
  primenodes <- setdiff(diffnodes,intnodes)
  split.names <- vector()

  for (i in primenodes){
    temp <- unlist(nodes(ctemp,i)[[1]][[5]])
    split.names <- append(split.names, as.character(temp[length(temp)]))
  }

  return(paste(unique(split.names), collapse = ', '))  
}

测试代码:

airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxsurrogate = 3))
SplittedNames(airct)
[1] "Temp, Wind"
于 2014-03-21T11:57:08.460 回答
0
var.ctree<-function(fit){

  require(gdata)

  a<-capture.output(print(fit))  
  a<-a[-c(1:7)]   
  a<-trim(a)   

  v<-character()   
  for(h in 1:length(a)){
    b<-a[h]    
    b<-gsub(") ","q",b)    
    b<-gsub(")","q",b)    
    b<-gsub(" < ","q",b)    
    b<-gsub(" > ","q",b)    
    b<-gsub(" <= ","q",b)    
    b<-gsub(" <= ","q",b)    
    b<-gsub("  weights = ","q",b)    
    v[h]<-unlist(strsplit(b,"q"))[2]    
  }    
  v<-factor(v,levels=names(fit@data@get("input")))    
  v<-v[is.na(v)==FALSE]    
  tabla<-table(v)>0    
  sol<-as.numeric(table(v)>0)    
  names(sol)<-names(tabla)    
  sol    
}    
于 2012-05-22T23:39:21.477 回答