我试图在使用时获取树的拆分变量列表ctree
。
我找到了一种使用 psplit 获取特定节点的特定拆分变量的方法。但我想获得整个树中分裂变量的整个列表。
有什么简单的获取方法吗?
我试图在使用时获取树的拆分变量列表ctree
。
我找到了一种使用 psplit 获取特定节点的特定拆分变量的方法。但我想获得整个树中分裂变量的整个列表。
有什么简单的获取方法吗?
这将完成这项工作
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"
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
}