使用以下代码行在python块中设置根目录会导致错误,而对于普通的r块,它工作正常
knitr::opts_knit$set(root.dir ="..")
knitr::opts_knit$set(root.dir ="..")
理想情况下,每个 knitr-chunk 应该存在以下选项: - 查找要导入/执行的代码的目录 - 目录以查找代码执行所需的文件/依赖项 - 保存任何代码输出的目录
存在类似的东西吗?
这里看起来是你告诉它要寻找python代码:
```{python}
knitr::opts_knit$set(root.dir ="..")
```
当你在 R studio 中运行它时,它会给你一个错误:
错误:语法无效(,第 1 行)
你给它喂了python代码。 这是有道理的,因为调用 knit::opt_knit$set 意味着在 knitr 包中查找 opts_knit$set 并将其设置为....这在python中不存在...还。 python编译器无法将其识别为python代码并返回语法错误。 而当你把它作为一个R块运行时,它知道查看knitr包。 错误处理可能是一个巨大的问题。处理错误类别比考虑每种类型的错误更有意义。 如果要控制代码块的设置,可以在括号中执行此操作,即:
```{python, args }
codeHere
```
除了R之外,我没有看到任何其他语言的args,但这并不意味着它不存在。 我只是没有见过他们。 我也不相信这会解决您的问题。您可以尝试以下一些想法:
将你的python写在一个单独的文件中并链接到它。 这将允许您利用该语言并利用操作系统导入等功能。 这可能是您要考虑的事情,因为即使是python也有其浏览各种操作系统的方式。 如果您只是运行快速脚本而不加载或运行 python 程序,这可能会有所帮助。
# OS module import os # Your os name print(os.name) # Gets PWD or present working directory os.getcwd() # change your directory os.chdir("path")
您可以尝试在 R 块中使用网状库并以这种方式加载您的 python
。另一个想法是你可以试试
库(网状) use_python("路径")
如果需要,Knitr 会查找与您的 markdown 文件相同的目录,以查找其他文件。 这就像任何其他 IDE 一样
- 在某个时间点,knitr 不会接受 R 的 setwd() 命令。尝试调用 setwd() 可能对您没有任何好处。
- 计算相对于正在执行的内容的路径可能不是最佳主意。如果可能,应相对于用户调用代码的位置来确定它们。
这个网站可能会有所帮助。
针织包的作者非常活跃和参与。祝你正在做的事情好运!