2016-03-30 9 views
0

Ich möchte Ausgabe von anova.rms in ein data.frame erhalten.Ausgabe von anova.rms in data.frame erhalten

library("rms") 

# generate data taken from ?cph 
n <- 1000 
set.seed(731) 
age <- 50 + 12*rnorm(n) 
label(age) <- "Age" 
sex <- factor(sample(c('Male','Female'), n,rep=TRUE, prob=c(.6, .4))) 
cens <- 15*runif(n) 
h <- .02*exp(.04*(age-50)+.8*(sex=='Female')) 
dt <- -log(runif(n))/h 
label(dt) <- 'Follow-up Time' 
e <- ifelse(dt <= cens,1,0) 
dt <- pmin(dt, cens) 
units(dt) <- "Year" 
dd <- datadist(age, sex) 
options(datadist='dd') 
S <- Surv(dt,e) 

f <- cph(S ~ rcs(age,4)*sex, x=TRUE, y=TRUE) 

anovaTable <- anova(f,main.effect=T,indnl=F) 
# the table I want 
anovaTable 

data.frame (anovaTable) funktioniert nicht wegen der doppelten Zeilennamen. Ich suchte str (anovaTable), aber es war nicht klar, wie man es erhält. Vielen Dank.

+0

Sie könnten versuchen, die "ordentliche" Funktion des "Besen" -Pakets zu verwenden. – Jota

Antwort

1

Sie können die make.unique-Funktion verwenden, um die Zeilennamen eindeutig zu machen.

as.data.frame(anovaTable, row.names = make.unique(rownames(anovaTable)))