2017-08-25 39 views
2

我使用R markdown和Knitr使用Rstudio。針織用戶輸入

我有下列R-降價文件:

--- 
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

看來,針織文檔時,無法進行打印,用戶輸入的字符串...

任何幫助,這將非常感謝。

+0

所以你有'print(prjName)',然後只是'prjName2' ..那麼'prjName'(no'print')呢? – C8H10N4O2

+0

有趣,在RStudio中運行我甚至沒有機會輸入任何東西,它只是完成編織 – C8H10N4O2

+1

我猜你正在使用R Studio的「編織」功能。在非交互式會話中呈現文檔,這意味着'readline'函數不會要求輸入。它總是會返回''「'。 –

回答

1

正如Nathan在評論中所說的,您不能使用readline來獲取knitr文檔中的輸入,因爲它不是交互式的。但是您可以使用「參數化報告」獲得用戶輸入(請參閱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設置爲「項目名稱」。如果您點擊「使用參數編織」(或在rmarkdown::render的調用中設置params = "ask"),系統會提示您輸入值,並將其作爲默認值。