首页 > 解决方案 > 使用 jupiter notebook 在 conda 环境中设置 R

问题描述

这应该很简单,因为 anaconda 的最新阶段应该与 R 非常兼容。我正在关注本教程,

https://www.statsmodels.org/stable/examples/notebooks/generated/mixed_lm_example.html

然而,在这第 3 行,

%R library(lme4)

我收到了这个错误:

RRuntimeError                             Traceback (most recent call last)
<ipython-input-26-ce7ee867bca4> in <module>()
----> 1 get_ipython().magic(u'R library(lme4)')

/home/myname/anaconda2/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in magic(self, arg_s)
   2158         magic_name, _, magic_arg_s = arg_s.partition(' ')
   2159         magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2160         return self.run_line_magic(magic_name, magic_arg_s)
   2161 
   2162     #-------------------------------------------------------------------------

/home/myname/anaconda2/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in run_line_magic(self, magic_name, line)
   2079                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2080             with self.builtin_trap:
-> 2081                 result = fn(*args,**kwargs)
   2082             return result
   2083 

<decorator-gen-157> in R(self, line, cell, local_ns)

/home/myname/anaconda2/lib/python2.7/site-packages/IPython/core/magic.pyc in <lambda>(f, *a, **k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f, *a, **k: f(*a, **k)
    189 
    190         if callable(arg):

/home/myname/anaconda2/lib/python2.7/site-packages/rpy2/ipython/rmagic.pyc in R(self, line, cell, local_ns)
    693         finally:
    694             if self.device in ['png', 'svg']:
--> 695                 ro.r('dev.off()')
    696 
    697         if text_output:

/home/myname/anaconda2/lib/python2.7/site-packages/rpy2/robjects/__init__.pyc in __call__(self, string)
    361     def __call__(self, string):
    362         p = _rparse(text=StrSexpVector((string,)))
--> 363         res = self.eval(p)
    364         return conversion.ri2py(res)
    365 

/home/myname/anaconda2/lib/python2.7/site-packages/rpy2/robjects/functions.pyc in __call__(self, *args, **kwargs)
    176                 v = kwargs.pop(k)
    177                 kwargs[r_k] = v
--> 178         return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
    179 
    180 pattern_link = re.compile(r'\\link\{(.+?)\}')

/home/myname/anaconda2/lib/python2.7/site-packages/rpy2/robjects/functions.pyc in __call__(self, *args, **kwargs)
    104         for k, v in kwargs.items():
    105             new_kwargs[k] = conversion.py2ri(v)
--> 106         res = super(Function, self).__call__(*new_args, **new_kwargs)
    107         res = conversion.ri2ro(res)
    108         return res

RRuntimeError: Error in dev.off() : cannot shut down device 1 (the null device)

有谁知道如何使用 conda 环境正确设置 R 并能够像该教程那样将它与 python 混合使用?谢谢!

标签: pythonrconda

解决方案


lme4 不在 conda 包中,因此您需要安装。

https://conda.io/docs/commands/build/conda-skeleton-cran.html

尝试通过 cran 安装包:

./bin/conda skeleton cran lme4

然后运行:

./bin/conda build r-lme4/

推荐阅读