首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在data.frame笔记本中获取r IPython

在data.frame笔记本中获取r IPython
EN

Stack Overflow用户
提问于 2015-02-24 10:14:28
回答 1查看 1.8K关注 0票数 0

在使用data.frame时,我可以从命令行获得以下IPython对象:

代码语言:javascript
复制
 In [1]: import pandas as pd

 In [2]: df = pd.DataFrame({'a':[1,2,3],'b':[2,4,6]})

 In [3]: df
Out[3]:
   a  b
0  1  2
1  2  4
2  3  6

In [4]: %load_ext rmagic

In [5]: col =df.columns

In [6]: %R -i df,col colnames(df) <- unlist(col); print(is.matrix(df))
[1] FALSE


In [7]: %R rdf <- data.frame(df); print(is.data.frame(rdf))
[1] TRUE


In [8]: %R print(summary(rdf))
       a             b
 Min.   :1.0   Min.   :2
 1st Qu.:1.5   1st Qu.:3
 Median :2.0   Median :4
 Mean   :2.0   Mean   :4
 3rd Qu.:2.5   3rd Qu.:5
 Max.   :3.0   Max.   :6


In [9]: %R -d rdf

In [10]: pydf2 = pd.DataFrame(rdf)

然而,当尝试在笔记本上这样做时,它是不起作用的。

代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-48-04a06535eeef> in <module>()
----> 1 get_ipython().magic(u'R -d rdf')

/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc in magic(self, arg_s)
   2203         magic_name, _, magic_arg_s = arg_s.partition(' ')
   2204         magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2205         return self.run_line_magic(magic_name, magic_arg_s)
   2206 
   2207     #-------------------------------------------------------------------------

/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc in run_line_magic(self, magic_name, line)
   2124                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2125             with self.builtin_trap:
-> 2126                 result = fn(*args,**kwargs)
   2127             return result
   2128 

/usr/local/lib/python2.7/dist-packages/IPython/extensions/rmagic.pyc in R(self, line, cell, local_ns)

/usr/local/lib/python2.7/dist-packages/IPython/core/magic.pyc in <lambda>(f, *a, **k)
    191     # but it's overkill for just that one bit of state.
    192     def magic_deco(arg):
--> 193         call = lambda f, *a, **k: f(*a, **k)
    194 
    195         if callable(arg):

/usr/local/lib/python2.7/dist-packages/IPython/extensions/rmagic.pyc in R(self, line, cell, local_ns)
    663         if args.dataframe:
    664             for output in ','.join(args.dataframe).split(','):
--> 665                 self.shell.push({output:self.Rconverter(self.r(output), dataframe=True)})
    666 
    667         for tag, disp_d in display_data:

/usr/local/lib/python2.7/dist-packages/IPython/extensions/rmagic.pyc in Rconverter(Robj, dataframe)
    121         as_data_frame = ro.r('as.data.frame')
    122         cols = colnames(Robj)
--> 123         _names = names(Robj)
    124         if cols != ri.NULL:
    125             Robj = as_data_frame(Robj)

TypeError: 'StrVector' object is not callable

有人知道如何处理这个问题吗?

谢谢!

软件和系统摘要:

  • IPython版本2.3.0
  • python版本2.7.3
  • rpy2版本2.5.2
  • R版本3.1.2
  • Ubuntu 12.04.5精确
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-18 01:19:44

在IPython笔记本中,需要使用%load_ext rpy2.ipython而不是%load_ext rmagic才能从R.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28693046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档