[R] problem with nlme, environments, and packages

Greg Hather ghather at gmail.com
Tue Jun 16 01:32:34 CEST 2015


Hello R users,

I encountered a strange problem while writing a package that uses the
nlme function.  First, I wrote some code that uses the nlme function,
and it ran without errors.  However, when I tried to put the code into
a package, the nlme function was unable to locate a function that was
used in the formula.  Could it be that nlme is looking in the wrong
environment?  I would appreciate any suggestions.  Below is a
reproducible example with the problem.

########### BEGIN EXAMPLE ##############

#' Fake package to show nlme error
#' @export

main_function <- function(x){
 library(nlme)
 result <- nlme(height ~ SSasymp(age, Asym, R0, lrc) +
nonlinear_function(age),
                data = Loblolly,
                fixed = Asym + R0 + lrc ~ 1,
                random = Asym ~ 1,
                start = c(Asym = 103, R0 = -8.5, lrc = -3.3))
 result
}

nonlinear_function <- function(x){
 log(x)
}

########### END EXAMPLE ##############

The above code can be installed as a package and run with the commands

library(devtools)
library(roxygen2)
setwd("C:/test")  # or any prefered directory
create("testPackage")
setwd("./testPackage")
document()
setwd("..")
install("testPackage")
main_function()

The output is

> main_function()
Error in eval(expr, envir, enclos) :
 could not find function "nonlinear_function"
>
> sessionInfo()
R version 3.1.3 (2015-03-09)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)
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:
[1] stats     graphics  grDevices utils     datasets  methods
[7] base
other attached packages:
[1] nlme_3.1-120           testPackage_0.0.0.9000
[3] roxygen2_4.1.1         devtools_1.8.0
loaded via a namespace (and not attached):
[1] curl_0.8        digest_0.6.8    git2r_0.10.1
[4] grid_3.1.3      lattice_0.20-31 magrittr_1.5
[7] memoise_0.2.1   Rcpp_0.11.6     rversions_1.0.1
[10] stringi_0.4-1   stringr_1.0.0   tools_3.1.3
[13] xml2_0.1.1

Note that if I simply paste main_function and nonlinear_function into
the R console, then main_function() runs without errors.

Greg

	[[alternative HTML version deleted]]



More information about the R-help mailing list