2

ESS にバッファー (Cc、Cb など) から以下を評価するように要求する場合

par(ask=TRUE)
plot(1,1)
plot(2,1)

ESS が引数 --no-readline で R セッションを開始するため、インタープリターは無限ループに入ります。ループは Cg で中断できますが、インタープリターに実際にユーザー入力を要求させる方法はありますか?

4

2 に答える 2

1

ess-r-d.el解決策は、 に指定されたハードコードされ--no-runtimeたオプションを編集して削除するRことです。これは、最新の実装の 127 行目です。

変化する

  (let* ((r-always-arg
      (if (or ess-microsoft-p (eq system-type 'cygwin))
          "--ess "
        "--no-readline "))

  (let* ((r-always-arg
      (if (or ess-microsoft-p (eq system-type 'cygwin))
          "--ess "))

コンパイル済みのバージョンがある場合は、それをコンパイルし.elてバイナリ.elcファイルを生成および置換する必要があります。

ファイルは(ディレクトリの場所はOSによって異なります)

  • site-lispディレクトリで。.elファイルを emacs (^X^F) で編集してM-x byte-compile-fileから、.elc.

  • zip/tar ソース パッケージ全体からインストールした場合は、lispディレクトリに。この場合、変更後に を実行し、makeその後に を実行しmake installます。

もちろん、およびファイルwriteにアクセスできる必要があります。.el.elc

ファイルのコンパイルに慣れていない場合は、.el単純に削除して ( .elc)、.elバージョンのみを使用できます (パフォーマンスの違いはわずかです)。

于 2010-12-08T03:23:28.083 に答える
0

(GoogleとRSiteSearchesから収集された戦略):

いずれかのセッションウィンドウで「Returnキーを押してください」というプロンプトが表示されますか?もしそうなら...ヒット。

そうでない場合は、プロットウィンドウをクリックしてみてください。

それが失敗した場合は、cGで制御を取り戻す必要があります。

編集:確かにESS-非対話性の問題を解決しないさらなる戦略:ユーザー入力を保持したい場合は、readLinesを使用できます:

input=file("stdin")
print(readLines(input,1))
于 2010-12-04T22:50:24.053 に答える