Rにデータを入力するためのプロンプト/応答システムの作成


84

私はRについて何も知らない人が使用するためのRコードをいくつか作成しました(私自身はかなり環境に配慮していますが)。私は人々に初期データをRコンソールに貼り付けさせてきました(結果はまちまちです)。そして、人々がデータを入力するためのよりユーザーフレンドリーな方法を設定したいと思っていました。

理想的には、誰かがコンソールに座ってコマンドを入力し、データの入力方法に関する特定の質問を求められる可能性があります。

たとえば、人がrをロードすると、プロンプトが表示されます。

What is x value?

次のように入力します。

2

次のプロンプト:

What is y value?

人のタイプ:

3

次のプロンプト:

 What are T values?

人のタイプ:

 4,3,2,1

次のプロンプト:

V値とは何ですか?

人のタイプ:

4,5,6,9

そして、これらの4つの新しく定義された変数(X、Y、T、V)を使用して、Rの次のステップは事前に記述されたコードを実行することです

X+Y
V+T

そしてコンソールに答えがポップアップします

5
8 8 8 10

そして、誰もが幸せです

これは再現可能なコードのような質問ではないので、お詫びしますが、Rについて質問するのではなく、Rに質問させる方法がわかりません。

回答:


74

これはインタラクティブコードとしてのみ使用されることになっているのでreadline()、あなたのために働くことができます。エラーチェックは追加しませんでしたが、適切な入力を確実にするために、かなりの量のエラーチェックを実行することをお勧めします。ただし、コアコンセプトは次のとおりです。

fun <- function(){
  x <- readline("What is the value of x?")  
  y <- readline("What is the value of y?")
  t <- readline("What are the T values?")
  v <- readline("What are the V values?")

  x <- as.numeric(unlist(strsplit(x, ",")))
  y <- as.numeric(unlist(strsplit(y, ",")))
  t <- as.numeric(unlist(strsplit(t, ",")))
  v <- as.numeric(unlist(strsplit(v, ",")))

  out1 <- x + y
  out2 <- t + v

  return(list(out1, out2))

}

3
コードはうまく機能します!開始方法に少し戸惑いましたが、readline()のメモを見た後、上記の「if(interactive())fun()」に最後の1行を追加すると、プロンプトが自動的に開始されます。ありがとう!
Vinterwoo 2012年

1
これはいいね。ただし、unlist関数とstrsplit関数で何が起こっているのかを正確に理解しようとしています。Rはここで何をしているのですか?
Seanosapien 2016

1
@Seanosapien元の例のようにユーザーが「4,3,2,1」と入力した場合、入力からコンマを取り除くためにstrsplitが必要です。入力がその形式でない場合は必要ありません。
ローレンフィッチ

62

で使用される単純なテキストベースメニューインターフェイスとプロンプトについては?menu、fromも参照してください。utilsdevtools

次に例を示します。

> menu(c("Yes", "No"), title="Do you want this?")
Do you want this? 

1: Yes
2: No

Selection:

7

この質問は死から持ち帰られたので、おそらく更新された答えを書いています。

この場合、GUIがまったく役立つ場合、ShinyパッケージはRStudioと十分に統合されており、これをShinyアプリケーションとして実装するのは非常に簡単です。ウェブサイトhttp://shiny.rstudio.comには、例やドキュメントなど、より多くの情報があります。


5

この特定のケースではやり過ぎかもしれませんが、swirlパッケージは初心者にRをインタラクティブに紹介するのに適しています。

swirlは、Rコンソールをインタラクティブな学習環境に変えるRプログラミング言語用のソフトウェアパッケージです。ユーザーは、データサイエンスとRプログラミングの自習型レッスンを通じてガイドされるため、即座にフィードバックを受け取ります。

コンテンツを生成する手順は、http//swirlstats.com/instructors.htmlにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.