问题描述
我正尝试在this tutorial之后将git log --find-object=blobid -- Readme.md
中的多元Cox回归分析应用于我的数据集。
特别是,我尝试应用以下功能R
:
coxph()
如您所见,在这种情况下,特征(install.packages(c("survival","survminer"));
library("survival");
library("survminer");
data("lung");
res.cox <- coxph(Surv(time,status) ~ age + sex + ph.ecog,data = lung)
summary(res.cox)
)的名称已手动插入到公式中。
在我的情况下,我拥有成千上万的功能,因此无法手动添加其名称。我需要找到一种自动插入它们的方法。 我尝试对前一个案例进行操作,但没有成功。 这是我尝试过的:
age + sex + ph.ecog
我收到此错误消息:
featureNames <- paste(colnames(lung),collapse = " + ")
res.cox <- coxph(Surv(time,status) ~ featureNames,data = lung)
有人可以帮助我吗?谢谢! 我在运行Linux Ubuntu 18.04.5 LTS /
的PC上使用Error in model.frame.default(formula = Surv(time,:
variable lengths differ (found for 'featureNames')
版本3.6.3解决方法
使用重新格式化,首先设置一个默认公式:
fS <- Surv(time,status) ~ .
假设您事先了解这些功能:
colnames(lung)
[1] "inst" "time" "status" "age" "sex" "ph.ecog"
[7] "ph.karno" "pat.karno" "meal.cal" "wt.loss"
features = c("ph.karno","age","meal.cal","wt.loss")
fs = reformulate(features,fS[[2]])
coxph(fs,data = lung)
Call:
coxph(formula = fs,data = lung)
coef exp(coef) se(coef) z p
ph.karno -9.152e-03 9.909e-01 7.327e-03 -1.249 0.212
age 1.629e-02 1.016e+00 1.168e-02 1.395 0.163
meal.cal 5.087e-06 1.000e+00 2.391e-04 0.021 0.983
wt.loss -1.057e-03 9.989e-01 6.884e-03 -0.154 0.878
Likelihood ratio test=5.84 on 4 df,p=0.2113
n= 171,number of events= 124
(57 observations deleted due to missingness)
,
使用parse()
和eval()
可以解决问题。
featureNames <- paste(colnames(lung),collapse = " + ")
res.cox <- coxph(Surv(time,status) ~ eval(parse(text = featureNames)),data = lung)