2017-08-25 21 views
2

私はRstudioを使用してR markdownとKnitrを使用しています。knitr with user input

--- 
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マークダウンファイルを持っています。私はRマークダウンでチャンクを実行し、コンソールからユーザー入力を取得し、それをうまく印刷できます。また、グローバル環境では文字列として格納されます。私はしかし、文書を編むときに、私は以下の結果が得られます。これで

enter image description here文書を編むときに私は、ユーザー入力文字列を出力することができないことが表示されます

...

すべてのヘルプを希望大変感謝しています。

+0

あなたは 'print(prjName)'を持っていて、 'prjName2'だけです。' prjName'(no 'print')はどうですか? – C8H10N4O2

+0

興味深いことに、RStudioで実行しています。何も入力する機会がありません。ちょうど編み終わりです。 – C8H10N4O2

+1

Rスタジオの「ニット」機能を使用していると思います。これは、非対話型セッションでドキュメントをレンダリングします。つまり、 'readline'関数は入力を要求しません。常に '' ''を返すだけです。 –

答えて

1

Nathanがコメントで言ったように、は、対話型ではないため、knitrドキュメントで入力することはできません。しかし、 "パラメータ化されたレポート"(http://rmarkdown.rstudio.com/developer_parameterized_reports.htmlを参照)を使用してユーザ入力を得ることができます。たとえば、

このドキュメントを編成するだけであれば、prjNameに「プロジェクト名」が設定されます。 「パラメータ付きニット」(rmarkdown::renderへの呼び出しでparams = "ask"を設定)をクリックすると、その値をデフォルトとして指定するよう求められます。