【问题标题】:Can't declare a python function in Rstudio/Rmarkdown无法在 Rstudio/Rmarkdown 中声明 python 函数
【发布时间】:2021-02-23 19:03:30
【问题描述】:

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

IndentationError: 意外缩进(第 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】:

    您需要指定 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
    ```    
    

    如果你有windows,可能类似于"C:\\Users\\username\\Anaconda3\\python.exe")之类的

    【讨论】:

    • 感谢您的回答!我意识到,事实上,当你一次编织整个 RMarkdown 文档时,它就可以工作。但是,您是否尝试逐行(或逐块)执行代码?这样做时,错误仍然出现在我的案例中(是的,我检查了缩进和空格)。
    • 不是真的,但a few people 有变通办法,并在其他情况下使用网状函数。
    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 2021-04-12
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2013-05-02
    相关资源
    最近更新 更多