Dear all,
I have encountered a weird behaviour in R
survival package which seems to me to be a bug.
The weird behaviour happens when I am using
100 variables in the ridge function when calling
coxph with following formula Surv(time = futime,
event = fustat, type = "right") ~ ridge(X1, X2,
X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13,
X14, X15, X16, X17, X18, X19, X20, X21, X22, X23,
X24, X25, X26, X27, X28, X29, X30, X31, X32, X33,
X34, X35, X36, X37, X38, X39, X40, X41, X42, X43,
X44, X45, X46, X47, X48, X49, X50, X51, X52, X53,
X54, X55, X56, X57, X58, X59, X60, X61, X62, X63,
X64, X65, X66, X67, X68, X69, X70, X71, X72, X73,
X74, X75, X76, X77, X78, X79, X80, X81, X82, X83,
X84, X85, X86, X87, X88, X89, X90, X91, X92, X93,
X94, X95, X96, X97, X98, X99, X100,
theta = lambda, scale = FALSE)
and get the error message
Error in model.frame.default(formula = form,
data = sdf) : invalid variable names
Calls: coxph -> eval -> eval ->
model.frame -> model.frame.default Execution halted
I am using R 2.8.0 and the latest version of
the survival package 2.35-4.
Here is how you can re-create the error message
> library(survival)
Loading required package: splines> x<-as.data.frame(matrix(rnorm(100*500),ncol=100))
> x$y<-1:500
> x$status<-1
> lambda<-1.0
> ff<-as.formula(paste("Surv(y,status)~ridge(",
paste(names(x)[1:100],collapse=","),
",theta = lambda, scale = FALSE)"))> coxph(ff,x)
Error in model.frame.default(formula = ff,
data = x) : invalid variable names> print (ff)
Surv(y, status) ~ ridge(V1, V2, V3, V4, V5, V6, V7, V8, V9, V10,
V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22,
V23, V24, V25, V26, V27, V28, V29, V30, V31, V32, V33, V34,
V35, V36, V37, V38, V39, V40, V41, V42, V43, V44, V45, V46,
V47, V48, V49, V50, V51, V52, V53, V54, V55, V56, V57, V58,
V59, V60, V61, V62, V63, V64, V65, V66, V67, V68, V69, V70,
V71, V72, V73, V74, V75, V76, V77, V78, V79, V80, V81, V82,
V83, V84, V85, V86, V87, V88, V89, V90, V91, V92, V93, V94,
V95, V96, V97, V98, V99, V100, theta = lambda, scale = FALSE)
Also I have found that the code breaks with number of variables greater
than 97. For 97 and less it works fine. I have found that it breaks at the
following line of the coxph function
if (is.R())
m <- eval(temp, parent.frame())
I have been trying to understand why it breaks there and have not
progressed much so far.
With kind regards
DK
_________________________________________________________________
icons.
[[alternative HTML version deleted]]