[R-pkg-devel] import with except(ion)

Göran Broström gor@n@bro@trom @end|ng |rom umu@@e
Sat Oct 31 15:54:33 CET 2020



On 2020-10-31 14:30, Gabor Grothendieck wrote:
> coxreg could search for frailty and issue a warning or error if found.  This
> returns TRUE if frailty is used in the formula argument as a function but
> not otherwise.  That would allow implementation of a nicer message than
> if it were just reported as a missing function.
> 
> find_frailty <- function(e) {
>      if (is.logical(e)) return(e)
>      if (length(e) > 1) {
>          if (identical(e[[1]], as.name("frailty"))) return(TRUE)
>          for (i in 1:length(e)) if (isTRUE(Recall(e[[i]]))) return(TRUE)
>      }
>      FALSE
> }
> find_frailty(frailty ~ frailty)
> ## [1] FALSE
> fo <- Surv(time, status) ~ age + frailty(inst)
> find_frailty(fo)
> ## [1] TRUE

Thanks Gabor, I thought of checking for the use of the three coxph 
specials frailty, cluster, and tt in my functions coxreg, phreg, aftreg, 
tpchreg, gompreg, and weibreg. Your function would come in handy for this.

Göran

> 
> On Fri, Oct 30, 2020 at 2:46 PM Göran Broström <goran.brostrom using umu.se> wrote:
>>
>> My CRAN package eha depends on the survival package, and that creates
>> problems with innocent users: It is about the 'frailty' function
>> (mainly). While (after 'library(eha)')
>>
>> f1 <- coxph(Surv(time, status) ~ age + frailty(inst), data = lung)
>>
>> produces what you would expect (a frailty survival analysis), the use of
>> the coxreg function from eha
>>
>> f2 <- coxreg(Surv(time, status) ~ age + frailty(inst), data = lung)
>>
>> produces (almost) nonsense. That's because the survival::frailty
>> function essentially returns its input and coxreg is happy with that,
>> treats it as an ordinary numeric (or factor) covariate, and nonsense is
>> produced, but some users think otherwise. (Maybe it would be better to
>> introduce frailty in a separate argument?)
>>
>> I want to prevent this to happen, but I do not understand how to do it
>> in the best way. I tried to move survival from Depends: to Imports: and
>> adding import(survival, except = c(frailty, cluster)) to NAMESPACE. This
>> had the side effect that a user must qualify the Surv function by
>> survival::Surv, not satisfactory (similarly for other popular functions
>> in survival).
>>
>> Another option I thought of was to define my own Surv function as
>> Surv <- survival::Surv in my package, but it doesn't feel right.
>> It seems to work, though.
>>
>> As you may understand from this, I am not very familiar with these
>> issues. I have used Depends: survival for a long time and been happy
>> with that.
>>
>> Any help on this is highly appreciated.
>>
>> Göran
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> 
> 
>



More information about the R-package-devel mailing list