无法在 Rstudio/Rmarkdown 中声明 python 函数

问题描述 投票:0回答:1

我正在尝试在 Rstudio (Rmarkdown) 中的 python 块中执行 python 代码,但在收到错误时无法声明函数:

IndentationError: unexpected indent (<string>, line 1)

(我不会将制表符与空格等混合)

以下代码在 Rstudio 的 python 块中不起作用,但在 Python Spyder IDE 中工作得很好。

import pandas as pd

cars = {'Brand': ['1HondaA','2ToyotaA','3FordA','4AudiA'],
        'Brand_2': ['1HondaA','2ToyotaA','3FordA','4AudiA']
        }

df = pd.DataFrame(cars, columns = ['Brand', 'Brand_2'])
df

def convert(brand_column):
  df[brand_column] = df[brand_column].str.replace('A', '')
  df[brand_column + "_number"] = df[brand_column].str.extract('(\d+)')


convert("Brand")
df
convert("Brand_2")
df

屏幕:

python r r-markdown rstudio reticulate
1个回答
1
投票

您需要指定 python 所在的位置。我使用的是 Mac,所以我可以这样做。我没有想到你的缩进错误,所以也许仔细检查你的缩进和空格。

---
output: html_document
---

```{r}
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
use_python("/usr/local/bin/python3")
```

```{python}

import pandas as pd

cars = {'Brand': ['1HondaA','2ToyotaA','3FordA','4AudiA'],
        'Brand_2': ['1HondaA','2ToyotaA','3FordA','4AudiA']
        }

df = pd.DataFrame(cars, columns = ['Brand', 'Brand_2'])
df

def convert(brand_column):
  df[brand_column] = df[brand_column].str.replace('A', '')
  df[brand_column + "_number"] = df[brand_column].str.extract('(\d+)')


convert("Brand")
df
convert("Brand_2")
df
```    

如果你有窗户,它可能类似于

"C:\\Users\\username\\Anaconda3\\python.exe")
或类似的

© www.soinside.com 2019 - 2024. All rights reserved.