bounty将在6天后过期。回答此问题可获得+50的声誉奖励。Mike正在寻找来自声誉良好来源的答案。
我在Rmarkdown中使用params
。但是当使用参数并确保一切正常时,我在全局环境中将params重构为一个列表,并逐块运行文档以确保创建正确的报告,我遇到了一个问题,yaml中的params覆盖了全局环境中的列表。如果你运行第一个块而不编织它将创建一个参数列表值为6.然后如果你运行第二个块(ctrl + shift +enter)它将运行整个块。但是它将用yaml中的默认值覆盖params列表。但是当我逐行运行它时(ctrl + enter)这个问题不会发生。当我运行ctrl +shift +enter使列表被覆盖时会发生什么?.qmd
文件中也会出现这种情况。
---
title: "test"
author: "Michael"
output: html_document
params:
id: "4"
---
```{r setup, include=TRUE}
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE
)
params <- list(id = 6)
library(dplyr)
mtcars %>%
filter(cyl == params$id)
2条答案
按热度按时间ncgqoxb01#
在交互式会话中只运行
params <- list(id = 6)
就可以解决这个问题(在rmd和qmd文件中)。在旁注:如果没有这个条件,我甚至无法编织文件,因为我会遇到以下错误:
wfveoks02#
另一个不同的选择是在params块中使用
eval=FALSE
(编织时不运行),这样就可以使用yaml
id编织它,但是如果想使用创建的param,可以运行这行代码: