簡體   English   中英

rpy2 在 jupy 中將 python object 轉換為 R object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM