[R] R crashing oddly

Joshua Wiley jwiley.psych at gmail.com
Fri Apr 23 15:06:10 CEST 2010


Hello Michael,

I ran your code (from your email ~19 hours ago).  I believe I had the
same result as Uwe.  It certainly did not crash.  Here is the output
from debug right before it reported the error:

debug: coef(object[[i]]) <- value[parMap[, i]]
Browse[3]>
Error in `coef<-.corSpatial`(`*tmp*`, value = c(0, 0, 0)) :
  Cannot change the length of the parameter after initialization

I also included the output from Sys.info() and sessionInfo() so you
can see what my platform is.  Technically I have Windows 7 x64.

> Sys.info()
         sysname          release          version         nodename
       "Windows"      "Vista x64"     "build 7600" "REDACTED"
         machine            login             user
           "x86"   "REDACTED"   "REDACTED"
> sessionInfo(package="nlme")
R version 2.11.0 (2010-04-22)
x86_64-pc-mingw32

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
character(0)

other attached packages:
[1] nlme_3.1-96

loaded via a namespace (and not attached):
[1] base_2.11.0      graphics_2.11.0  grDevices_2.11.0 grid_2.11.0
[5] lattice_0.18-5   methods_2.11.0   stats_2.11.0     tools_2.11.0
[9] utils_2.11.0

On Fri, Apr 23, 2010 at 5:43 AM, Michael Steven Rooney
<michael.s.rooney at gmail.com> wrote:
> hmmmm... mine crashes even if I place:
>
> debug(getS3method("coef<-","corSpatial"))
>
> before the model run. Below is what R spits out after the seg fault. It's
> never the same twice. I hope someone else out there will try the code
> because I really do think this is more than an error.
>
>> mymodel <- lme(fixed = e ~ a,random= ~ 1 |
> g,data=df,correlation=corSPT(corExp(c(1,.5),form = ~ t |
> g,nugget=TRUE),corExp(c(1,.5),form= ~ x + y | g,
> nugget=TRUE)),control=list(msVerbose=TRUE,opt="nlminb"))
> 1 0.51 0.51 0.51 0.51 0.51 0.5
>  *** caught segfault ***
> address 0xe0000030, cause 'memory not mapped'
> Traceback:
>  1: FUN(X[[2L]], ...)
>  2: lapply(attr(object[["time"]], "covariate"), function(mat) (1 -
> time.nug) * exp(-mat/time.rng))
>  3: corMatrix.corSPT(object)
>  4: corMatrix(object)
>  5: unlist(corMatrix(object))
>  6: corFactor.corSPT(object)
>  7: corFactor(object)
>  8: `coef<-.corSPT`(`*tmp*`, value = c(0, 0, 1.49011611938477e-08))
>  9: `coef<-`(`*tmp*`, value = c(0, 0, 1.49011611938477e-08))
> 10: `coef<-.modelStruct`(`*tmp*`, value = c(0.360627924013365, 0, 0,
> 1.49011611938477e-08))
> 11: `coef<-`(`*tmp*`, value = c(0.360627924013365, 0, 0,
> 1.49011611938477e-08))
> 12: logLik.lmeStruct(lmeSt, lmePars)
> 13: logLik(lmeSt, lmePars)
> 14: objective(.par, ...)
> 15: .Call(R_port_nlminb, obj, grad, hess, rho, low, upp, d =
> rep(as.double(scale),     length.out = length(par)), iv, v)
> 16: nlminb(c(coef(lmeSt)), function(lmePars) -logLik(lmeSt, lmePars),
> control = list(iter.max = controlvals$msMaxIter, eval.max =
> controlvals$msMaxEval,         trace = controlvals$msVerbose))
> 17: lme.formula(fixed = e ~ a, random = ~1 | g, data = df, correlation =
> corSPT(corExp(c(1,     0.5), form = ~t | g, nugget = TRUE), corExp(c(1,
> 0.5), form = ~x +     y | g, nugget = TRUE)), control = list(msVerbose =
> TRUE,     opt = "nlminb"))
> 18: lme(fixed = e ~ a, random = ~1 | g, data = df, correlation =
> corSPT(corExp(c(1,     0.5), form = ~t | g, nugget = TRUE), corExp(c(1,
> 0.5), form = ~x +     y | g, nugget = TRUE)), control = list(msVerbose =
> TRUE,     opt = "nlminb"))
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
>
>
> 2010/4/23 Uwe Ligges <ligges at statistik.tu-dortmund.de>
>
>> When I try it, I do not get a crash but an error message:
>>
>> 1 0.5Error in `coef<-.corSpatial`(`*tmp*`, value = c(0, 0, 0)) :
>>  Cannot change the length of the parameter after initialization
>>
>> Even trying several times I always get the error and cannot reproduce any
>> crash.
>>
>> Best wishes,
>> Uwe
>>
>>
>>
>>
>> On 22.04.2010 19:31, Michael Steven Rooney wrote:
>>
>>> Hi Uwe,
>>>
>>> I downloaded R 2.11.0 and the latest version of nlme. I am still getting
>>> the
>>> problem. I should also note that I got a message from Viechtbauer Wolfgang
>>> saying that he had experienced a similar problem using nlme.
>>>
>> >
>>
>>> I have pasted the code below. (The data is generated in the first ~15
>>> lines). I have bunch of debug() statements, which may or may not be
>>> useful.
>>> The code is not as elegant as it could be since I have been constantly
>>> editing it to try to track down the bug (I replaced the corMatrix C
>>> routine
>>> with R code). FYI, the objective of the code is to simultaneously fit
>>> temporal and spatial correlation (adding one corExp matrix plus another)
>>> where the nuggets are constrained to add to 1.
>>>
>>> I really hope you have a chance to look at this. Thanks so much!!
>>>
>>> ## BEGIN
>>>
>>> N<- 100
>>> x<- round(sin(rep(1:23/2,length.out=N)),digits=2)+1:N*2/N
>>> y<- round(cos(rep(1:23/2,length.out=N)),digits=2)+1:N*2/N
>>> g<- rep(1:5,each=N/5)
>>> a<- round(runif(N,0,10))
>>> t<- 1:N
>>> r<- runif(N,0,5)
>>> e<- 5*sin(4*x) +
>>>      5*cos(4*y) +
>>>      5*sin(t) +
>>>      2*g +
>>>      a +
>>>      r
>>> e<- round(e)
>>>
>>> df<- data.frame(x,y,g,a,t,r,e)
>>> df<- df[-c(22,23,67),]
>>>
>>> library(nlme)
>>>
>>> corSPT<- function(a,b) {
>>>   object<- list("time"=a,"space"=b)
>>>   class(object)<-  c("corSPT","corSpatial","corStruct")
>>>   attr(object, "formula")<- formula(object)
>>>   attr(object, "nugget")<- attr(object[["time"]], "nugget")
>>>   attr(object, "metric")<- attr(object[["time"]], "metric")
>>>   attr(object, "fixed")<- attr(object[["time"]], "fixed")
>>>   return(object)
>>> }
>>>
>>> coef.corSPT<- function(object,...) {
>>>
>>>
>>> c("time"=coef(object[["time"]],...),"space"=coef(object[["space"]],...)[1])
>>> }
>>>
>>> "coef<-.corSPT"<- function (object, ..., value) {
>>>     value<- as.numeric(value)
>>>     if (length(value) != 3) {
>>>         stop("Cannot change the length of the parameter of a corSPT
>>> object")
>>>     }
>>>     object[["time"]][]<- value[1:2]
>>>     object[["space"]][]<- c(value[3],-value[2]) # nugget for space is
>>> determined by the nugget for time
>>>     attr(object, "factor")<- NULL
>>>     attr(object, "factor")<- corFactor(object)
>>>     attr(object, "logDet")<- NULL
>>>     attr(object, "logDet")<- logDet(object)
>>>     object
>>> }
>>>
>>> Initialize.corSPT<- function (object, data, ...) {
>>>     if (!is.null(attr(object[["time"]], "minD"))) {
>>>         return(object)
>>>     }
>>>     object[["time"]]<-
>>> getS3method("Initialize","corStruct")(object[["time"]], data)
>>>     object[["space"]]<-
>>> getS3method("Initialize","corStruct")(object[["space"]], data)
>>>     object[["time"]][1]<- log(object[["time"]][1])
>>>     object[["space"]][1]<- log(object[["space"]][1])
>>>     object[["time"]][2]<- log(object[["time"]][2]/(1 -
>>> object[["time"]][2]))
>>>     object[["space"]][2]<- -object[["time"]][2]
>>>     attr(object,"groups")<- attr(object[["time"]],"groups")
>>>     attr(object,"Dim")<- attr(object[["time"]],"Dim")
>>>     attr(object,"covariate")<- NULL
>>>     attr(object, "nugget")<- attr(object[["time"]], "nugget")
>>>     attr(object[["time"]],"minD")<- min(unlist(attr(object[["time"]],
>>> "covariate")))
>>>     attr(object[["space"]],"minD")<- min(unlist(attr(object[["space"]],
>>> "covariate")))
>>>     attr(object, "minD")<- NULL
>>>     ###
>>>     corD<- Dim(object[["time"]])
>>>     attr(object[["time"]],"covariate")<- lapply(seq(corD$M),function(M) {
>>>       x<- attr(object[["time"]],"covariate")[[M]]
>>>       l<- corD$len[M]
>>>       g<- rep(seq(l),(l-1):0)
>>>       mat<- do.call(rbind,lapply(seq(l),function(G)
>>> {c(rep(0,G),x[g==G])}))
>>>       mat<- mat + t(mat)
>>>     })
>>>     attr(object[["space"]],"covariate")<- lapply(seq(corD$M),function(M) {
>>>       x<- attr(object[["space"]],"covariate")[[M]]
>>>       l<- corD$len[M]
>>>       g<- rep(seq(l),(l-1):0)
>>>       mat<- do.call(rbind,lapply(seq(l),function(G)
>>> {c(rep(0,G),x[g==G])}))
>>>       mat<- mat + t(mat)
>>>     })
>>>     ###
>>>     attr(object, "factor")<- corFactor(object)
>>>     attr(object, "logDet")<- -attr(attr(object, "factor"), "logDet")
>>>     object
>>> }
>>>
>>> corMatrix.corSPT<- function(object,covariate = NULL,corr=TRUE, ...) {
>>>   if (corr) {
>>>     temp<- coef(object[["time"]],unconstrained=FALSE)
>>>     cat(temp)
>>>     time.rng<- temp[1]
>>>     time.nug<- temp[2]
>>>     temp<- coef(object[["space"]],unconstrained=FALSE)
>>>     space.rng<- temp[1]
>>>     space.nug<- temp[2]
>>>     cor.time<- lapply(attr(object[["time"]],"covariate"),function(mat)
>>> (1-time.nug)*exp(-mat/time.rng))
>>>     cor.space<- lapply(attr(object[["space"]],"covariate"),function(mat)
>>> (1-space.nug)*exp(-mat/space.rng))
>>>     x<- lapply(seq(length(cor.time)),function(mat)
>>> round(cor.time[[mat]]+cor.space[[mat]],4))
>>>     attr(x, "logDet")<- NULL
>>>   } else {
>>>     d<- Dim(object)
>>>     gg<- rep(seq(d$M),each=d$len^2)
>>>     cf<- corFactor(object)
>>>     lD<- attr(cf, "logDet")
>>>     x<- lapply(seq(d$M),function(mm) {mat<- cf[gg==mm];
>>> matrix(mat,nrow=d$len[mm])})
>>>     attr(x,"logDet")<- lD
>>>   }
>>>   return(x)
>>> }
>>>
>>> corFactor.corSPT<- getS3method("corFactor","corStruct")
>>> logDet.corSPT<- getS3method("logDet","corStruct")
>>> recalc.corSPT<- getS3method("recalc","corStruct")
>>>
>>> formula.corSPT<- function(object,...) {
>>>   a<- as.character(formula(object[["time"]]))
>>>   b<- as.character(formula(object[["space"]]))
>>>   a<- strsplit(a[2],split="|",fixed=TRUE)[[1]]
>>>   b<- strsplit(b[2],split="|",fixed=TRUE)[[1]]
>>>   as.formula(paste("~",a[1],"+",b[1],"|",a[2]))
>>> }
>>>
>>> Dim.corSPT<- function(object,...) {
>>>   Dim(object[["time"]],...)
>>> }
>>>
>>> debug(corSPT)
>>> debug(getS3method("recalc","corSpatial"))
>>> debug(getS3method("recalc","corStruct"))
>>> debug(getS3method("Initialize","corSPT"))
>>> debug(getS3method("coef<-","corSPT"))
>>> debug(getS3method("coef","corSPT"))
>>> debug(getS3method("corFactor","corSPT"))
>>> debug(getS3method("logDet","corStruct"))
>>> debug(getS3method("logLik","lmeStruct"))
>>> debug(getS3method("recalc","modelStruct"))
>>> debug(getS3method("recalc","corStruct"))
>>> debug(getS3method("corMatrix","corSPT"))
>>> debug(getS3method("coef<-","reStruct"))
>>> debug(getS3method("coef<-","modelStruct"))
>>> debug(getS3method("corMatrix","corSpatial"))
>>> debug(getS3method("Initialize","corSpatial"))
>>> debug(getS3method("Initialize","corStruct"))
>>>
>>> mymodel<- lme(fixed = e ~ a,random= ~ 1 |
>>> g,data=df,correlation=corSPT(corExp(c(1,.5),form = ~ t |
>>> g,nugget=TRUE),corExp(c(1,.5),form= ~ x + y | g,
>>> nugget=TRUE)),control=list(msVerbose=TRUE,opt="nlminb"))
>>>
>>> ## End
>>>
>>>
>>> 2010/4/21 Uwe Ligges<ligges at statistik.tu-dortmund.de>
>>>
>>>
>>>>
>>>> On 21.04.2010 18:19, Michael Steven Rooney wrote:
>>>>
>>>> The R version is 2.9.2.
>>>>>
>>>>>
>>>> Please try with R-2.11.0 RC (release candidate) to be released tomorrow
>>>> as
>>>> well as a recent version of nlme.
>>>>
>>>> If its still fails, please send code (and data, if you do not generate
>>>> them
>>>> in the code) that reproduces the problem.
>>>>
>>>> Uwe Ligges
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  nlme version is 3.1-93
>>>>
>>>>> The OS is Windows XP.
>>>>> This is for my work computer but I get the same behavior at home using
>>>>> Vista.
>>>>> ---------- Forwarded message ----------
>>>>> From: Sarah Goslee<sarah.goslee at gmail.com>
>>>>> Date: Wed, Apr 21, 2010 at 11:50 AM
>>>>> Subject: Re: [R] R crashing oddly
>>>>> To: Michael Steven Rooney<michael.s.rooney at gmail.com>
>>>>>
>>>>>
>>>>> You definitely need to provide the information requested in the posting
>>>>> guide,
>>>>> specifically OS, R version, package version (and update to the newest if
>>>>> you
>>>>> haven't yet).
>>>>>
>>>>> Sarah
>>>>>
>>>>> On Wed, Apr 21, 2010 at 11:41 AM, Michael Steven Rooney
>>>>> <michael.s.rooney at gmail.com>   wrote:
>>>>>
>>>>> Hi,
>>>>>>
>>>>>> I am working with the package nlme, and I tried creating a new
>>>>>> correlation
>>>>>> class (which, according to the help pages, is possible if you write a
>>>>>> few
>>>>>> new method functions). Anyways, I think I am 99% of the way there, but
>>>>>> I
>>>>>> have a recurring problem with R crashing on seemingly innocuous
>>>>>> statements
>>>>>> (I have set debug() on nearly every function, so I can see where it is
>>>>>> failing).
>>>>>>
>>>>>>  --
>>>>>>
>>>>> Sarah Goslee
>>>>> http://www.functionaldiversity.org
>>>>>
>>>>>        [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-help at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide
>>>>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>>
>>>>
>>>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Joshua Wiley
Senior in Psychology
University of California, Riverside
http://www.joshuawiley.com/



More information about the R-help mailing list