2015-12-14 122 views
10

我正在使用Rstudio来处理我一天到晚的R内容。有时候,我想用一些python/bash来处理R不擅长的部分。奇怪的是我发现,如果我开始一个新的RMarkdown文档时,下面的代码工作:在Rstudio中运行python/bash代码

```{r engine='python'} 
print "Hello" + "World" 
import random 
print random.random() 
``` 

python in rstudio

Rstudio可以运行我一些蟒蛇。这是非常有用的,但最好我可以运行这不仅通过减价功能,而且通过一个控制台。在release notes建议支持语法突出显示。

我想知道,是否有任何方法将新控制台连接到Rstudio,以便我们也可以从IDE执行一些Python/bash?当然,Rstudio似乎有一个关于如何连接到python的概念。最终的目标是创建.Rmd文件,并能够编辑/与他们具有以下结构的互动:

# Use Case 

Connect to an api that is supported in python 

```{r engine='python', highlight=TRUE} 
data = foobar_api.get(1000) 
file_loc = open("~/data/filename.csv", "w") 
file_loc(data) 
file_loc.close() 
``` 

Then analyse with R again. 

```{r} 
df <- read.csv("~/data/filename.csv") 
summary(df) 
``` 

回答

2

首先你需要设置knitr选项。

```{r} 
knitr::opts_chunk$set(engine.path = list(python = '/anaconda/bin/python')) 
``` 

从这一点上就可以发挥作用。

```{python} 
import this 
``` 
1

如果使用Architect或纯EclipseStatET,您可以安装PyDev插件和与你的R控制台一样容易启动和与Python控制台交互(当然,还有对编辑和处理.Rmd文件的充分支持)

+0

它来自同一个文件吗? – cantdutchthis

1

这是一个最好的knitr的例子,其中它允许multiple language engines。您可以考虑编辑该文件只是这些情况在VIM,因为你可以做一些有趣的是接近你问:选择文本,然后键入:

:'<,'>!python 

在python执行和

:<','>!R --no-save 

要在R中执行请参阅this question的答案以获取更多详细信息。

上述内容并没有完全解决用例,因为所选文本被命令的输出替换(在简单的R命令的情况下以R版本等开始)。但是,可以使用this vimtip将输出发送到不同的缓冲区(读取:窗口)。

RStudio中的VIM模式非常优秀(它甚至支持视觉模块模式)。但它无法模拟一切,RStudio中的:!python将无法​​工作。我经常在RStudio和VIM中都有我正在开发的文档,上述内容可能是您为具有混合语言的Rmd文档执行相同操作的原因。