[英]rpy2 convert python object to R object in jupyter lab
我正在使用 rpy2 庫在 jupyter 實驗室的同一筆記本中同時使用 R 和 python。 一切正常(首先我安裝了 R 基本庫和第二個 rpy2 庫)。
要加載我使用的庫
%load_ext rpy2.ipython
在我使用的每個 R 代碼之前
%%R
要將 R object 轉換為 python,我使用
%R -o R_object
並將 python object 轉換為 R 我使用
%R -i python_object
我的問題是最后一個代碼(從 python 轉換為 R)。 我有以下錯誤我不明白
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-90-cc234320b667> in <module>
----> 1 get_ipython().run_line_magic('R', '-i python_object')
~\anaconda3\lib\site-packages\IPython\core\interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
2315 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2316 with self.builtin_trap:
-> 2317 result = fn(*args, **kwargs)
2318 return result
2319
<C:\Users\steph\anaconda3\lib\site-packages\decorator.py:decorator-gen-131> in R(self, line, cell, local_ns)
~\anaconda3\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
~\anaconda3\lib\site-packages\rpy2\ipython\rmagic.py in R(self, line, cell, local_ns)
688 raise NameError("name '%s' is not defined" % input)
689 with localconverter(converter) as cv:
--> 690 ro.r.assign(input, val)
691
692 tmpd = self.setup_graphics(args)
~\anaconda3\lib\site-packages\rpy2\robjects\functions.py 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\{(.+?)\}')
~\anaconda3\lib\site-packages\rpy2\robjects\functions.py in __call__(self, *args, **kwargs)
100
101 def __call__(self, *args, **kwargs):
--> 102 new_args = [conversion.py2ri(a) for a in args]
103 new_kwargs = {}
104 for k, v in kwargs.items():
~\anaconda3\lib\site-packages\rpy2\robjects\functions.py in <listcomp>(.0)
100
101 def __call__(self, *args, **kwargs):
--> 102 new_args = [conversion.py2ri(a) for a in args]
103 new_kwargs = {}
104 for k, v in kwargs.items():
~\anaconda3\lib\functools.py in wrapper(*args, **kw)
838 '1 positional argument')
839
--> 840 return dispatch(args[0].__class__)(*args, **kw)
841
842 funcname = getattr(func, '__name__', 'singledispatch function')
~\anaconda3\lib\site-packages\rpy2\robjects\numpy2ri.py in nonnumpy2ri(obj)
119 # For now, go with the default_converter.
120 # TODO: the conversion system needs an overhaul badly.
--> 121 return ro.default_converter.py2ri(obj)
122 else:
123 # The conversion module was "activated"
~\anaconda3\lib\functools.py in wrapper(*args, **kw)
838 '1 positional argument')
839
--> 840 return dispatch(args[0].__class__)(*args, **kw)
841
842 funcname = getattr(func, '__name__', 'singledispatch function')
~\anaconda3\lib\site-packages\rpy2\robjects\conversion.py in _py2ri(obj)
58 (ri) objects.
59 """
---> 60 raise NotImplementedError("Conversion 'py2ri' not defined for objects of type '%s'" % str(type(obj)))
61
62 def _py2ro(obj):
NotImplementedError: Conversion 'py2ri' not defined for objects of type '<class 'tuple'>'
有人知道這是什么意思嗎?
提前謝謝你
斯蒂芬妮
其實我做了一些測試。 因為這個東西存在的最大好處之一是我們可以用一種語言創建或操作對象或數據並將其傳遞給另一種語言(例如,做更多的操作)。 顯然,這取決於我如何在 python 中創建 object(我是 python 的新手,我在 R 中更好)。 但現在兩者
%R -o R_object
和
%R -i python_object
運作良好。 但我沒有檢查幾個不同的 object (矩陣等......)。 我想我需要更多地使用它來更好地理解,但基本上它可以工作:)
祝你今天過得愉快
斯蒂芬妮
%R
/ %%R
已記錄在案。 嘗試:
%load_ext rpy2.ipython
?%%R
rpy2 文檔中還有一個專門用於筆記本的部分:
https://rpy2.github.io/doc/v3.4.x/html/generated_rst/notebooks.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.