在Jupyter Notebook中使用rpy2时尚不支持此类型的缓冲区

问题描述

我已经安装了rpy2所需的所有软件包,我想将R代码嵌入jupyter笔记本中以进行数据可视化。

但是,到目前为止,我的运气并不好,请指出我做错了哪一部分。希望找到解决方案。

# Import the libraries

import pandas as pd
import matplotlib.pyplot as plt
import rpy2

# Imports required from rpy2
from rpy2.robjects import pandas2ri   
pandas2ri.activate()
%load_ext rpy2.ipython
SheetA = pd.read_csv('C:\\Users\\test\\SheetA.csv')
SheetA_header=['Grill Type','Pre-Heat Time (In Seconds)','Fuel Cost Per Meal ($)','Market Share (%)','Ease Of Use','Life Span (In Years)','Initial Investment ($)']
SheetA=pd.read_csv("C:\\Users\\test\\SheetA.csv",header=None,skiprows=1,names=SheetA_header)
SheetA = pd.DataFrame(SheetA)
%%R -i SheetA

library(ggplot2)

ggplot(SheetA)

D:\Anaconda\lib\site-packages\rpy2\ipython\rmagic.py in _(obj)
    147     if 'data.frame' in obj.rclass:
    148         # request to turn it to a pandas DataFrame
--> 149         res = converter.ri2py(obj)
    150     else:
    151         res = ro.sexpvector_to_ro(obj)

D:\Anaconda\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')

D:\Anaconda\lib\site-packages\rpy2\robjects\pandas2ri.py in ri2py_listvector(obj)
    181 def ri2py_listvector(obj):
    182     if 'data.frame' in obj.rclass:
--> 183         res = ri2py(DataFrame(obj))
    184     else:
    185         res = numpy2ri.ri2py(obj)

D:\Anaconda\lib\functools.py in wrapper(*args,'singledispatch function')

D:\Anaconda\lib\site-packages\rpy2\robjects\pandas2ri.py in ri2py_dataframe(obj)
    188 @ri2py.register(DataFrame)
    189 def ri2py_dataframe(obj):
--> 190     items = tuple((k,ri2py(v)) for k,v in obj.items())
    191     res = PandasDataFrame.from_items(items)
    192     return res

D:\Anaconda\lib\site-packages\rpy2\robjects\pandas2ri.py in <genexpr>(.0)
    188 @ri2py.register(DataFrame)
    189 def ri2py_dataframe(obj):
--> 190     items = tuple((k,v in obj.items())
    191     res = PandasDataFrame.from_items(items)
    192     return res

D:\Anaconda\lib\functools.py in wrapper(*args,'singledispatch function')

D:\Anaconda\lib\site-packages\rpy2\robjects\pandas2ri.py in ri2py_vector(obj)
    137 @ri2py.register(SexpVector)
    138 def ri2py_vector(obj):
--> 139     res = numpy2ri.ri2py(obj)
    140     return res
    141 

D:\Anaconda\lib\functools.py in wrapper(*args,'singledispatch function')

D:\Anaconda\lib\site-packages\rpy2\robjects\numpy2ri.py in ri2py_sexp(obj)
    157 def ri2py_sexp(obj):
    158     if (obj.typeof in _vectortypes) and (obj.typeof != VECSXP):
--> 159         res = numpy.asarray(obj)
    160     else:
    161         res = ro.default_converter.ri2py(obj)

D:\Anaconda\lib\site-packages\numpy\core\_asarray.py in asarray(a,dtype,order)
     83 
     84     """
---> 85     return array(a,copy=False,order=order)
     86 
     87 

ValueError: Buffer for this type not yet supported.

将数据帧处理到rpy2时肯定有问题,只是一个猜测。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...