6

我正在使用一个一直工作到 R3.0 的包。

问题如上所述....当我们从 R 3.0 调用在 R 2.15.2 中工作的函数时,我们得到一个错误

Error in .C("solarspectrum3", as.double(lon), as.double(lat), as.double(timezone),  : 
  "solarspectrum3" not resolved from current namespace (SolarSpectrum)

任何帮助,将不胜感激

亚历克斯

该软件包可在https://www.dropbox.com/s/zgspdzd2rq5jmh6/SolarSpectrum_1.0.tar.gz找到

安装软件包

R CMD INSTALL SolarSpectrum_1.0.tar.gz ,然后

require(SolarSpectrum)

longitude=2

latitude=50

date=as.POSIXct("2008-06-06")

PAR <- SolarSpectrum.PAR(longitude, latitude, date)[2]

此时应该会出现错误

4

2 回答 2

5

此错误消息可能会影响使用调用.C()或调用外部代码的函数.Call()

这个问题在这个 R-help 线程中有很好的描述;尤其是马丁摩根的回应很有用。NEWS当版本 3.0.0 发布时,他引用了 R 文件的条目。

没有 PACKAGE 参数的包中的外部函数调用(.C() 等)将只查找包的 NAMESPACE 文件中指定的第一个 DLL,而不是搜索所有加载的 DLL。一些包需要添加 PACKAGE 参数。

因此,调用.C()or.Call()需要在包的源代码中进行修改,以包含PACKAGE = "name_of_dll_without_extension".

您可以使用以下代码找到 DLL 名称。

dir(system.file("libs", package = "rpkgname"))
于 2017-03-09T21:14:10.867 回答
0

这可能现在已经解决了;但是,请尝试将 SolarSpectrum.PAR 中 .C 调用的 PACKAGE 参数设置为“SolarSpectrum”(这可能涉及更改 SolarSpectrum.PAR 的包源文件)。这可能会让 R 在正确的名称空间中查找(我实际上没有尝试过,但它适用于具有相同错误的不同包)。

于 2014-11-03T01:40:50.913 回答