简体   繁体   中英

ggadjustedcurves survminer Error in if (xi > xj) 1L else -1L

I'm trying to use survminer to create an adjusted survival curve with ggadjustedcurves(). My code is as follows:

adjustedcurve <- coxph(Surv(time_DeathTxCensor, deadORtx==1) ~ strata(natADI_quart) + sex + FVCpctPre + DLCOpctPre + smokeHx + age_dx, data=ADI, id=ID)
ggadjustedcurves(adjustedcurve,
                 variable="natADI_quart",
                 method="conditional",
                 data=ADI)

And I am getting the error message:

Error in if (xi > xj) 1L else -1L: missing value where TRUE/FALSE needed

Also here is my traceback:

16. .gt(structure(c(1L, 3L, 2L, 4L), .Label = c("1", "2", "3", "4" ), class = "factor"), 1L, 2L)
15. rank(x, ties.method = "min", na.last = "keep")
14. as.vector(rank(x, ties.method = "min", na.last = "keep"))
13. xtfrm.default(x)
12. xtfrm(x)
11. as.vector(xtfrm(x))
10. FUN(X[[i]], ...)
9. lapply(z, function(x) if (is.object(x)) as.vector(xtfrm(x)) else x)
8. order(x, na.last = na.last, decreasing = decreasing)
7. `[.tbl_df`(x, order(x, na.last = na.last, decreasing = decreasing))
6. x[order(x, na.last = na.last, decreasing = decreasing)]
5. sort.default(unique(data[, variable]))
4. sort(unique(data[, variable]))
3. ggadjustedcurves.conditional(data, fit, variable, size = size)
2. surv_adjustedcurves(fit = fit, variable = variable, data = data, reference = reference, method = method, size = size, ...)
1. ggadjustedcurves(adjustedcurve, data = ADI)

I have no idea what this means or how to fix it. Would really appreciate any help:)

The problem arises in the survminer adjusted curves functions, where it is trying to sort the unique levels of a factor variable by indexing from the data set using the variable name.

This throws an error.

If you're comfortable editing the functions in the package, you can retrieve them from here: https://github.com/kassambara/survminer/blob/master/R/ggadjustedcurves.R

.. and fix the bug by replacing the three occurrences of:

lev <- sort(unique(data[,variable]))

with

lev <- sort(unique(pull(data, variable)))

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM