1

我有以下问题:

.C("NetCDFOpen", as.character(filename), ncid = integer(1), status = integer(1), 错误:C 符号名称 "NetCDFOpen" 不在包 "xcms" 的 DLL 中

你如何得到这个错误:

nc     <- xcms:::netCDFOpen(cdfFile)
ncData <- xcms:::netCDFRawData(nc)
xcms:::netCDFClose(nc)

我不知道为什么这不起作用,尽管它应该。如需更多信息,请随时询问。免费的 .cdf 文件可以在TargetSearchData包中找到。

代码示例:

## The directory with the NetCDF GC-MS files
cdfpath <- file.path(.find.package("TargetSearchData"), "gc-ms-data")
cdfpath
4

1 回答 1

3

正如你所暗示的那样,我认为它不应该。首先,您通过:::. 此外,如错误消息所述,NetCDFOpen未定义符号是dll/so文件。

使用来自 的标准输入功能xcms,工作顺利:

> library("xcms")
> cdfpath <- file.path(.find.package("TargetSearchData"), "gc-ms-data")
> cdfFile <- dir(cdfpath, full.names=TRUE)[1]
> xs <- xcmsSet(cdfFile)
7235eg04: 135:168 185:314 235:444 285:580 
> xr <- xcmsRaw(cdfFile)

如果您真的想手动输入数据,您应该使用mzR包中的功能,这xcms取决于:

> openMSfile(cdfFile)
Mass Spectrometry file handle.
Filename:  /home/lgatto/R/x86_64-unknown-linux-gnu-library/2.16/TargetSearchData/gc-ms-data/7235eg04.cdf 
Number of scans:  4400 

最后,请注意始终提供 的输出sessionInfo,以确保您使用的是最新版本。就我而言:

> sessionInfo()
R Under development (unstable) (2012-10-23 r61007)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] BiocInstaller_1.9.4 xcms_1.35.1         mzR_1.5.1          
[4] Rcpp_0.9.15        

loaded via a namespace (and not attached):
[1] Biobase_2.19.0     BiocGenerics_0.5.1 codetools_0.2-8    parallel_2.16.0   
[5] tools_2.16.0      

尽管如果您使用 R 和 Bioconductor 的稳定版本(当前2.15.2/ 2.11),可能对您有所不同。

希望这可以帮助。

于 2012-11-01T23:08:06.057 回答