r - 带有用户输入的 knitr

标签 r knitr r-markdown

我正在使用 R markdown 和 Knitr 使用 Rstudio。

我有以下 R Markdown 文件:

---
title: "Untitled"
author: ""
date: ""
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
#Load libraries
library(knitr)
library(ggplot2)
library(reshape2)
library(chron)
library(gridExtra)

#Get current directory
directory = getwd()
setwd(directory)

readname = function()#prompt user for the name and number of the site
{ 
  n <- readline(prompt="Site name and number: ")
  return(n)
}
prjName=readname()
print(prjName)
prjName2="TEST NAME"
prjName2

该代码要求用户输入站点名称和编号。我可以在 R markdown 中运行块并通过控制台获取用户输入并打印它就好了。它也作为字符串存储在全局环境中。然而,当我编织文档时,我得到以下结果:

enter image description here

似乎在编织文档时我无法打印用户输入字符串......

对此的任何帮助将不胜感激。

最佳答案

正如内森在评论中所说,你不能使用 readlineknitr 中获取输入文档,因为它不是交互式的。但是您可以使用“参数化报告”获取用户输入(请参阅 http://rmarkdown.rstudio.com/developer_parameterized_reports.html )。例如,

---
title: "Untitled"
author: ""
date: ""
output: html_document
params: 
  prjName: "The project name"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
readname = function()# Get the project name
{ 
  params$prjName
}
prjName=readname()
prjName

如果你只是编织这个文件,它会将 prjName 设置为“项目名称”。如果您单击“使用参数编织”(或在对 params = "ask" 的调用中设置 rmarkdown::render),系统将提示您输入该值,并将该值作为默认值。

关于r - 带有用户输入的 knitr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888571/

相关文章:

css - Rmarkdown html报告中的DT数据表透明背景

r - 针织 RMarkdown html_document 中的 Kable (kableExtra) 垂直滚动条?

r - 使用 emmenas 为 post hoc 估计效果大小

从数据框中删除所有引号

r - 我可以标记 knitr 代码块和输出并为其添加标题吗?

r - 将 Shiny(非 ggplot)图输出为 PDF

r - 在矩阵 B 中查找来自矩阵 A 的行的索引

r - 图中每个点的高度值

r - 如何让knitr在RStudio中使用相同的R session ?

r - 抑制 download.file 函数的错误消息