model.frame.default 中的错误:变量长度不同,R 预测函数
Error in model.frame.default: variable lengths differ, R predict function
这不是一个新问题,我在其他地方看到了几个建议的解决方案并尝试了它们,none有效,所以我问。
我该如何解决这个错误?我正在使用 R version 3.5.3 (2019-03-11)
Error in model.frame.default(data = ov_val, formula = Surv(time = ov_dev$futime, : variable lengths differ (found for 'rx')
这是一个可重现的例子:
library(survival)
library(survminer)
library(dplyr)
# Create fake development dataset
ov_dev <- ovarian[1:13,]
# Create fake validation dataset
ov_val <- ovarian[13:26,]
# Run cox model
fit.coxph <- coxph(Surv(time = ov_dev$futime, event = ov_dev$fustat) ~ rx + resid.ds + age + ecog.ps, data = ov_dev)
summary(fit.coxph)
# Where error occurs
p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))
我认为发生这种情况是因为您在模型规范中使用了 ov_dev$futime
和 ov_dev$fustat
,而不仅仅是使用 futime
和 fustat
。这意味着当您进行预测时,模型使用 ov_dev
数据作为因变量,但使用 ov_val
作为自变量,它们的长度不同(13 对 14)。只需删除数据帧前缀并信任 data
参数:
library(survival)
library(survminer)
library(dplyr)
# Create fake development dataset
ov_dev <- ovarian[1:13,]
# Create fake validation dataset
ov_val <- ovarian[13:26,]
# Run cox model
fit.coxph <- coxph(Surv(futime, fustat) ~ rx + resid.ds + age + ecog.ps,
data = ov_dev)
p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))
p
#> [1] 0.4272783 -0.1486577 -1.8988833 -1.1887086 -0.8849632 -1.3374428
#> [7] -1.2294725 -1.5021708 -0.3264792 0.5633839 -3.0457613 -2.2476071
#> [13] -1.6754877 -3.0691996
由 reprex package (v0.3.0)
于 2020-08-19 创建
这不是一个新问题,我在其他地方看到了几个建议的解决方案并尝试了它们,none有效,所以我问。
我该如何解决这个错误?我正在使用 R version 3.5.3 (2019-03-11)
Error in model.frame.default(data = ov_val, formula = Surv(time = ov_dev$futime, : variable lengths differ (found for 'rx')
这是一个可重现的例子:
library(survival)
library(survminer)
library(dplyr)
# Create fake development dataset
ov_dev <- ovarian[1:13,]
# Create fake validation dataset
ov_val <- ovarian[13:26,]
# Run cox model
fit.coxph <- coxph(Surv(time = ov_dev$futime, event = ov_dev$fustat) ~ rx + resid.ds + age + ecog.ps, data = ov_dev)
summary(fit.coxph)
# Where error occurs
p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))
我认为发生这种情况是因为您在模型规范中使用了 ov_dev$futime
和 ov_dev$fustat
,而不仅仅是使用 futime
和 fustat
。这意味着当您进行预测时,模型使用 ov_dev
数据作为因变量,但使用 ov_val
作为自变量,它们的长度不同(13 对 14)。只需删除数据帧前缀并信任 data
参数:
library(survival)
library(survminer)
library(dplyr)
# Create fake development dataset
ov_dev <- ovarian[1:13,]
# Create fake validation dataset
ov_val <- ovarian[13:26,]
# Run cox model
fit.coxph <- coxph(Surv(futime, fustat) ~ rx + resid.ds + age + ecog.ps,
data = ov_dev)
p <- log(predict(fit.coxph, newdata = ov_val, type = "expected"))
p
#> [1] 0.4272783 -0.1486577 -1.8988833 -1.1887086 -0.8849632 -1.3374428
#> [7] -1.2294725 -1.5021708 -0.3264792 0.5633839 -3.0457613 -2.2476071
#> [13] -1.6754877 -3.0691996
由 reprex package (v0.3.0)
于 2020-08-19 创建