use*_*114 5 macos r build rscript sublimetext3
更新:
在尝试对这个问题的评论中详述的各种事情后,我的问题已经发生了变化.之前在这个问题中描述的问题可能确实是由于@9716所建议的不良JSON,或者与我的"$PATH"配置有关,正如@RandyLai所讨论的那样.
我可能已经确定了潜在的问题:字符编码.在崇高的文本使用我的生成变异,在我的前面YAML事项附加符号.Rmd文件导致从那些最初描述,我似乎不再得到不同的错误(这要求原来这里的问题时,我一直在做):
Error en yaml::yaml.load(front_matter)
Run Code Online (Sandbox Code Playgroud)
有趣的是,在RStudio或终端(或从shell脚本)中使用相同的YAML时,不会抛出此错误.当我从YAML中删除变音符号时,我在ST中没有错误; 但是,如果我将变音符号放在主文档中,则会NA在生成的HTML中进行渲染.这种类似于我之前发生的事情,我在下面描述为"wackily错误"的HTML输出.
在对这个问题的评论中,我试图对我做各种各样的事情"$PATH",因为它们对于@RandyLai来说似乎没有必要; 我特别是指在添加路径pandoc到/etc/launchd.config:具有还原默认路径之后/usr/bin:/bin:/usr/sbin:/sbin,一切工作以ST为我描述现在,不管我用我的体型变体SublimeKnitr-knitr的.sublime-build或R Box-R Markdown的.sublime-build.
这是我的语言环境信息,以防它有用:
Mi-Mac:~ LeGastronome$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
我试图找出Sublime Text如何执行其.sublime-build文件.
在我的Mac上(v10.9.3)崇高的文本3我已经创建了两个自定义生成变异SublimeKnitr的knitr-Markdown和R型箱体的R Markdown语法; 这是我.sublime-build的前者文件,它具有完整功能的原始/默认构建,后跟我的错误变体:
{
"selector": "text.html.markdown.knitr",
"working_dir": "${project_path:${folder}}",
"cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
"shell": true,
"variants":
[
{
"name": "Render",
"working_dir": "$file_path",
"shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我.sublime-build对R Box的R Markdown,这与SublimeKnitr的knitr-Markdown构建非常相似:
{
"selector": "text.html.rmarkdown",
"working_dir": "${project_path:${folder}}",
"cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
"shell": true,
"variants":
[
{
"name": "Render",
"working_dir": "$file_path",
"shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
}
]
}
Run Code Online (Sandbox Code Playgroud)
在我的自定义生成变种我已经同时使用一对密钥的尝试cmd和shell,以及shell_cmd如上面提到的代码,我相信这是新ST3.在任何情况下,两者都会在我运行时在终端中发生不受欢迎的事情:
Rscript -e "rmarkdown::render(input = 'path/to/file.Rmd')"
Run Code Online (Sandbox Code Playgroud)
当我在RStudio中跑步时:
rmarkdown::render(input = 'path/to/file.Rmd')
Run Code Online (Sandbox Code Playgroud)
我使用SublimeKnitr的构建获得与使用R Box构建时相同的结果.我得到的输出如下:
与映射:
"cmd": [ "Rscript -e \"rmarkdown::render(input = '$file')\"" ],
"shell": true
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error: pandoc version 1.12.3 or higher is required and was not found.
Ejecuci'on interrumpida
[Finished in 0.4s with exit code 1]
[cmd: ['Rscript -e "rmarkdown::render(input = \'/path/to/file.Rmd\')"']]
[dir: /path/to/pertinent/directory]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
Run Code Online (Sandbox Code Playgroud)
请注意,我确实pandoc安装并完全可操作,例如:
Mi-Mac:~ LeGastronome$ pandoc --version
pandoc 1.12.4.2
Compiled with texmath 0.6.6.1, highlighting-kate 0.5.8.1.
Syntax highlighting is supported for the following languages:
actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
fortran, fsharp, gcc, gnuassembler, go, haskell, haxe, html, ini, isocpp,
java, javadoc, javascript, json, jsp, julia, latex, lex, literatecurry,
literatehaskell, lua, makefile, mandoc, markdown, matlab, maxima, metafont,
mips, modelines, modula2, modula3, monobasic, nasm, noweb, objectivec,
objectivecpp, ocaml, octave, pascal, perl, php, pike, postscript, prolog,
python, r, relaxngcompact, restructuredtext, rhtml, roff, ruby, rust, scala,
scheme, sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog,
vhdl, xml, xorg, xslt, xul, yacc, yaml
Default user data directory: /Users/LeGastronome/.pandoc
Copyright (C) 2006-2014 John MacFarlane
Web: http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
Run Code Online (Sandbox Code Playgroud)与映射:
"shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
Run Code Online (Sandbox Code Playgroud)
我得到了所需类型的文档,HTML,但HTML是错误的,与我从Terminal和RStudio运行上述代码时得到的不同; 另外,仅在Sublime Text中我收到以下警告:
pandoc: YAML header is not an object "source" (line 1, column 1)
Run Code Online (Sandbox Code Playgroud)
请注意,如果像上面引用的原始构建配置一样,我使用括号" [ ",如下所示:
"shell_cmd": [ "Rscript -e \"rmarkdown::render(input = '$file')\"" ]
Run Code Online (Sandbox Code Playgroud)
当我尝试运行构建变体时,Sublime不会构建也不会执行任何操作.
我的问题似乎是用户特定的,因为我正在寻找有关.sublime-build文件执行方式的更准确信息.我从一些非官方文档中了解到,默认情况下会运行一些Python; 但是,如上所述,当我从终端运行相同的代码时,如何包含在我的构建变体中,即:
Rscript -e "rmarkdown::render(input = 'path/to/file.Rmd')"
Run Code Online (Sandbox Code Playgroud)
我从Sublime Text获得了不同的不同结果?谢谢你的帮助.
看来你的系统不是英文的。当您在终端中运行 R 时,由于“LC_CTYPE”是 utf-8,因此 R 会将文档读取为 UTF-8 文档。但是,如果在 Sublime 内部启动该命令,“LC_CTYPE”为空,因此 R 不知道要使用什么编码。
有几种解决方案。
最简单但不太有吸引力的解决方案是将系统语言切换为英语。
另一种可能的方法是将 LANG=en_US.UTF-8 添加到 ~/.Renviron,将 R 默认语言环境更改为 utf8
另一种可能的解决方案是在 .sublime-build 文件中添加变量 LANG。在这里检查选项 env
或者在rmarkdown::render函数中指定UTF8编码。