I am using a package that has worked up until R3.0.
the issue is as above .... when we call a function that works in R 2.15.2 from R 3.0 we get an error
Error in .C("solarspectrum3", as.double(lon), as.double(lat), as.double(timezone), :
"solarspectrum3" not resolved from current namespace (SolarSpectrum)
any help would be appreciated
Alex
The package could be found at https://www.dropbox.com/s/zgspdzd2rq5jmh6/SolarSpectrum_1.0.tar.gz
install the package
R CMD INSTALL SolarSpectrum_1.0.tar.gz , then
run
require(SolarSpectrum)
longitude=2
latitude=50
date=as.POSIXct("2008-06-06")
PAR <- SolarSpectrum.PAR(longitude, latitude, date)[2]
The error should show up at this time
This error message can affect functions that call external code using calls to .C()
or .Call()
.
The problem is described well in this R-help thread; in particular Martin Morgan's response is useful. He quotes an entry to R's NEWS
file, when version 3.0.0 was released.
A foreign function call (.C() etc) in a package without a PACKAGE argument will only look in the first DLL specified in the NAMESPACE file of the package rather than searching all loaded DLLs. A few packages needed PACKAGE arguments added.
So the call to .C()
or .Call()
needs to be amended in the package's source, to include PACKAGE = "name_of_dll_without_extension"
.
You can find the DLL names with the following code.
dir(system.file("libs", package = "rpkgname"))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With