python 在 Rmarkdown 中使用 reticulate 无法读取包

python in Rmarkdown using reticulate cannot read packages

我在 MacBook 上使用 R。我有一个 Rmarkdown 文档,我正在尝试使用 reticulate 以便在 R.

中使用 python

首先我下载库:

```{r libraries, warning = FALSE, message = FALSE}

library(dplyr)
library(reticulate)

```

接下来我查看一个 R 块并确定我的工作目录。然后我把mtcars写到我的桌面上。

```{r chunk, warning = FALSE, message = FALSE}

getwd()

write.csv(mtcars, '/Users/name/Desktop/mtcars.csv', row.names = TRUE)

```

然后我尝试使用 python 来读取我刚刚写入桌面的 csv。

```{python}

import pandas as pd

mtcars = pd.read_csv('/Users/name/Desktop/mtcars.csv')

```

但是我得到这个错误:

ModuleNotFoundError: No module named 'pandas'
NameError: name 'pd' is not defined

所以我去了这个 R documentation website 并发现使用 python 你必须以不同的方式导入包。所以我去了终端,然后输入

python -m pip install pandas

好像可以下载?但是当我 return 我的 Rmarkdown 文档时,我似乎无法将 python 代码获取到 运行 并读入 csv。我仍然收到相同的错误消息。

我在 this SO post 上也看到了类似的问题,但我确定我的 RStudio 版本比这个问题中的版本更新,所以我的答案不会完全命中相同的错误。

一个选项是创建一个虚拟环境,安装包,然后指定要使用的虚拟环境

virtualenv_create("py-proj")
py_install("pandas", envname = "py-proj")

在rmarkdown中,我们可以使用

---
title: "Testing"
output:
  pdf_document: default
  html_document: default
---

```{r libraries, warning = FALSE, message = FALSE}
library(reticulate)
use_virtualenv("py-proj")
```


```{r chunk, warning = FALSE, message = FALSE}



write.csv(mtcars, "/Users/name/Desktop/mtcars.csv", row.names = TRUE)

```
```{python}

import pandas as pd
mtcars = pd.read_csv("/Users/name/Desktop/mtcars.csv")
mtcars.head(5)
```

-输出