是否可以使用 Sublime text 2 来处理 R-markdown 文件?
Is it possible to use Sublime text 2 to work in with R-markdown-files?
我最近发现您可以巧妙地使用 R-markdown(.Rmd) 文件。由于我更喜欢在 Sublime text 2 中完成我的所有工作,我很高兴找到这个 package. While the sending to R works nicely thanks to this ,出于某种原因,sublime 没有编译我的 markdown 文件。在 strg+shift+b 而不是 .md 文件之后我得到这个错误:
Traceback (most recent call last):
File ".\sublime_plugin.py", line 337, in run_
File ".\exec.py", line 154, in run
TypeError: __init__() got an unexpected keyword argument 'shell_cmd'
测试文件具有这种形式
% Test document
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do `eiusmod` tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
```{r example_chunk, fig.width=5, fig.height=3}
x <- rnorm(100)
y <- rnorm(100)
plot(y ~ x, pch=20)
```
我用的是python2.7。并安装了 knitr 的所有依赖项。
该软件包的构建系统包含一个与 Sublime Text 2 不兼容的 Run
变体,这就是导致您出现问题的原因。这似乎是软件包作者的疏忽,因此可能值得提交错误报告。
同时,您可以通过修改构建文件自行解决问题。如果你打开Packages\SublimeKnitr\knitr-Markdown.sublime-build
(如果你没有手动安装插件就使用PackageResourceViewer),你会看到如下:
{
"selector": "text.html.markdown.knitr",
"working_dir": "${project_path:${folder}}",
"env": { "LANG": "en_US.UTF-8" },
"cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
"shell": true,
"variants":
[
{
"name": "Run",
"working_dir": "$file_path",
"shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
}
]
}
问题是 Sublime Text 2 不支持 shell_cmd
(这似乎是 Sublime Text 3 的补充)。主构建使用 cmd
并通过 shell 将 shell
设置为 true 到 运行,这是在 Sublime Text 2 中执行此操作的正确方法。
如果您通过将 shell_cmd
更改为 cmd
并将字符串参数括在方括号中并包括 shell 行来修改变体:
"cmd": [ "Rscript -e \"rmarkdown::render(input = '$file')\"" ],
"shell": true
它应该适合你。请注意,构建文件是 JSON,因此以逗号分隔所有内容非常重要。
此处可能不需要添加 "shell": true
部分。它可能从构建的早期保留下来。我不熟悉 Sublime Text 2 如何处理它。
我最近发现您可以巧妙地使用 R-markdown(.Rmd) 文件。由于我更喜欢在 Sublime text 2 中完成我的所有工作,我很高兴找到这个 package. While the sending to R works nicely thanks to this
Traceback (most recent call last):
File ".\sublime_plugin.py", line 337, in run_
File ".\exec.py", line 154, in run
TypeError: __init__() got an unexpected keyword argument 'shell_cmd'
测试文件具有这种形式
% Test document
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do `eiusmod` tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
```{r example_chunk, fig.width=5, fig.height=3}
x <- rnorm(100)
y <- rnorm(100)
plot(y ~ x, pch=20)
```
我用的是python2.7。并安装了 knitr 的所有依赖项。
该软件包的构建系统包含一个与 Sublime Text 2 不兼容的 Run
变体,这就是导致您出现问题的原因。这似乎是软件包作者的疏忽,因此可能值得提交错误报告。
同时,您可以通过修改构建文件自行解决问题。如果你打开Packages\SublimeKnitr\knitr-Markdown.sublime-build
(如果你没有手动安装插件就使用PackageResourceViewer),你会看到如下:
{
"selector": "text.html.markdown.knitr",
"working_dir": "${project_path:${folder}}",
"env": { "LANG": "en_US.UTF-8" },
"cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
"shell": true,
"variants":
[
{
"name": "Run",
"working_dir": "$file_path",
"shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
}
]
}
问题是 Sublime Text 2 不支持 shell_cmd
(这似乎是 Sublime Text 3 的补充)。主构建使用 cmd
并通过 shell 将 shell
设置为 true 到 运行,这是在 Sublime Text 2 中执行此操作的正确方法。
如果您通过将 shell_cmd
更改为 cmd
并将字符串参数括在方括号中并包括 shell 行来修改变体:
"cmd": [ "Rscript -e \"rmarkdown::render(input = '$file')\"" ],
"shell": true
它应该适合你。请注意,构建文件是 JSON,因此以逗号分隔所有内容非常重要。
此处可能不需要添加 "shell": true
部分。它可能从构建的早期保留下来。我不熟悉 Sublime Text 2 如何处理它。