Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonRPY2加载edgeR R-package时出错,但它已安装并在R中工作_Python_R_Bioinformatics_Rpy2 - Fatal编程技术网

PythonRPY2加载edgeR R-package时出错,但它已安装并在R中工作

PythonRPY2加载edgeR R-package时出错,但它已安装并在R中工作,python,r,bioinformatics,rpy2,Python,R,Bioinformatics,Rpy2,使用rpy2在Python中加载R-packageedgeR时遇到问题 当我跑步时: import rpy2.robjects as robjects robjects.r(''' library(edgeR) ''') 我得到以下错误: /home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py:106: UserWarning: Loading required package: limma

使用
rpy2
在Python中加载R-package
edgeR
时遇到问题

当我跑步时:

import rpy2.robjects as robjects

robjects.r('''
    library(edgeR)
''')
我得到以下错误:

/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py:106: UserWarning: Loading required package: limma

  res = super(Function, self).__call__(*new_args, **new_kwargs)
/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py:106: UserWarning: Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so':
  /data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so: undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev

  res = super(Function, self).__call__(*new_args, **new_kwargs)
/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py:106: UserWarning: Error: package or namespace load failed for ‘edgeR’

  res = super(Function, self).__call__(*new_args, **new_kwargs)
Traceback (most recent call last):
  File "differential_expression.py", line 221, in <module>
    diff_expr_object.run_edgeR()
  File "differential_expression.py", line 127, in run_edgeR
    probs = call_edger(data, groups, sizes, genes)
  File "differential_expression.py", line 64, in call_edger
    ''')
  File "/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/__init__.py", line 321, in __call__
    res = self.eval(p)
  File "/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 178, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/home/user/.local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 106, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error: package or namespace load failed for ‘edgeR’
但是,当我运行以下命令时:

R
> library(edgeR)
> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS release 6.5 (Final)

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

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

other attached packages:
[1] edgeR_3.12.0 limma_3.26.9
> 
我可以看到,
edgeR
已成功安装并在
R
中运行。为什么它不能在Python中工作?我尝试从
rpy2
加载其他软件包,例如
库(工具)
,效果很好。

错误是:

UserWarning: Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so':
 /data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so: undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev
无法加载edgeR的C库。您有R和edgeR安装的详细信息吗?(我可以看出水蟒牵涉其中)。

找到了解决办法

由于我正在使用的
R
R-base
版本是使用
conda
安装的,因此安装
edgeR
时使用了相同的通道来修复错误

简单运行:


conda安装--channelhttps://conda.anaconda.org/bioconda bioconductor edger

检查此R安装是否与anaconda安装相同,类似于命令行中的“哪个R”。如果不是,您需要再次安装edgeR,这次安装在Anaconda的R(~Anaconda/bin/R)中。
UserWarning: Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so':
 /data/scratch/user/source/anaconda/lib/R/library/edgeR/libs/edgeR.so: undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev