将 anova.rms 的输出输出到 data.frame
get output of anova.rms into data.frame
我想将 anova.rms 的输出转换为 data.frame。
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) 由于行名重复而不起作用。我搜索了str(anovaTable),但不清楚如何获取它。谢谢。
您可以使用 make.unique
函数使行名称唯一。
as.data.frame(anovaTable, row.names = make.unique(rownames(anovaTable)))
我想将 anova.rms 的输出转换为 data.frame。
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) 由于行名重复而不起作用。我搜索了str(anovaTable),但不清楚如何获取它。谢谢。
您可以使用 make.unique
函数使行名称唯一。
as.data.frame(anovaTable, row.names = make.unique(rownames(anovaTable)))