如何使用nvim-r和rstan防止通过knitr打开/ tmp文件

时间:2019-01-24 23:10:17

标签: r knitr neovim rstan

我在neovim和nvim-r中使用R来通过\kpsampling()命令编织Rmd文档。问题是当我编织适合Rstan模型的Rmd时,它将在以下位置的单独的临时文件中打印Rstan options(mc.cores = parallel::detectCores())调用的输出,包括链的进度:

  

file:///tmp/RtmpMmXreV/file27067eb3452f_StanProgress.html

包含以下输出的

  

单击“刷新”按钮以查看链的进度   在localhost:11515在14:31:54.447上启动worker pid = 17045   在14:31:54.670在localhost:11515上启动worker pid = 17070

,它将在我的浏览器中打开该html文件。结果是每当新模型开始采样时,我的浏览器就会一直打开。这仅在我使用library(rstan) options(mc.cores = parallel::detectCores()) data(DNase) model <- stan_model(model_code = " data { int n; vector[n] conc; vector[n] density; } parameters { real b0; real b1; real<lower=0> sigma; } model { conc ~ normal(b0 + b1 * (density), sigma); b0 ~ normal(0, 10); b1 ~ normal(0, 10); sigma ~ normal(0, 10); }") fit <- sampling(model, data = list(n = nrow(DNase), conc = DNase$conc, density = DNase$density)) 并行化链时发生。没有该命令,HTML文件不会弹出。

是否可以防止nvim-r打开这些临时的html文件,或者可以使Rstan的链输出静音?

最小示例:

results="hide"

编辑: 我尝试将refresh = 0添加到块头,并将sampling()添加到基于this answerrefresh = 0调用中,无济于事。 starting worker...确实成功删除了消息的Click the Refresh button to see progress of the chains部分,但仍然打开了一个显示 import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPen, faSave } from '@fortawesome/free-solid-svg-icons'; import styles from "./EditBox.module.scss"; import classNames from 'classnames/bind'; let cx = classNames.bind(styles); class EditBox extends Component { constructor(props) { super(props); this.state = { isEditForm: false }; } setEditing = (value) => { if (value && this.props.initForm) { this.props.initForm(); } this.setState({ isEditForm: value }); } render() { return <div className={cx('editbox', this.state.isEditForm && 'editing')}> <h4>{this.props.title}</h4> {!this.state.isEditForm && <button className={cx('edit-button')} onClick={() => this.setEditing(true)}><FontAwesomeIcon size='lg' icon={faPen} /></button>} {this.state.isEditForm ? this.props.form((isSubmitting) => <div className={cx('buttons')}> <button className={cx('submit')} type="submit" disabled={isSubmitting}>Bewaren <FontAwesomeIcon icon={faSave} style={{ marginLeft: '10px' }}/></button> <button className={cx('cancel')} onClick={() => { this.setState({ isEditForm: false }) }}>Annuleren</button> </div>, this.setEditing) : this.props.panel(this.setEditing) } </div> } } export default EditBox; 的html文件。

1 个答案:

答案 0 :(得分:2)

open_progress = FALSE添加到sampling()可以防止stan将链的进度保存到日志文件中。默认值open_progress = TRUE仅在cores > 1时生效。来自rstan reference。示例:

sampling(model, open_progress = FALSE)