r - 从 shell 执行多行 R 表达式(带缩进)
问题描述
我正在努力实现您可能天真地写成的东西:
R -e "
rmarkdown::render(
'MyDocument.Rmd',
params = list(
year = 2017
),
output_file = 'ExampleRnotebook.html'
)
"
这样我就可以制作格式良好的提交脚本以在集群上运行。
我在下面尝试了一些变体,我想知道是否有另一种方法可以用R -f
标志来做到这一点?
read -r -d '' EXP << EOF
rmarkdown::render(
'MyDocument.Rmd',
params = list(
year = 2017
),
output_file = 'ExampleRnotebook.html'
)
EOF
R -e "$EXP"
但我得到了一系列看起来像这样的错误:
ARGUMENT 'params~+~=~+~list(' __ignored__
对于表达式的不同行,后跟:
> rmarkdown::render(
+
+ Error: unexpected end of input
重现:
我的文档.Rmd =
---
title: "R Notebook"
output: html_notebook
params:
year: 0000
---
```{r}
params$year
```
这工作正常:
read -r -d '' EXP <<- EOF
rmarkdown::render('MyDocument.Rmd', params = list(year = 2017 ), output_file = 'ExampleRnotebook.html')
EOF
R -e "$EXP"
但是使用更长的参数列表很难阅读
解决方案
这对我有用(R 版本 3.5.0):
R --no-save <<code
for(i in 1:3) {
i +
2
}
print(i)
runif(5,
1,10)
code
注意:换行符和填充是有意的。
推荐阅读
- python-3.x - 如何在python中提取流线图上的数据点?
- prolog - Prolog:根据原始列表生成解决方案
- blockchain - 比特币源代码中的 BITCOIN_SEED_NONCE 到底是什么?
- android - 在android中使用带有视图寻呼机的相机视图的好习惯是什么?
- node.js - FeatherJs (express) 可扩展性问题
- bash - 在远程服务器中跨 bash 会话更改 env 值
- java - 继承 ArrayList 给子类
- oracle - 变更集要求以识别由 liquibase 执行的唯一变更
- google-chrome - Chrome 扩展错误“runtime.lastError:消息端口在收到响应之前关闭。”
- java - executor.execute 方法的单元测试