24

プロジェクトで組織モードをより有効に活用しようとしています。リテラル プログラミングは特にデータ分析の領域に適用できると思います。org-mode を使用すると、非常に優れたリテラシー プログラミングを実行できます。

ほとんどの人は、分析を書くためのワークフローが他のほとんどのタイプのプログラミングとは異なることに同意すると思います。プログラムを書くだけでなく、データを探索します。そして、これらの探索の多くは行き止まりですが、完全に削除したり無視したりしたくありません。org ファイルを実行するたびにそれらを再実行したくありません。また、分析テンプレートに入れたい有用なコードのチャンクを見つけたり開発したりする傾向がありますが、これらのチャンクの一部はすべてのプロジェクトに関連するとは限らず、組織モードでこれらを無視する方法を知りたいですバッファ全体を実行しているときのチャンク。簡単な例を次に示します。

* Import
  - I want org-mode to ignore import-sql.
#+srcname: import-data
#+begin_src R :exports none :noweb yes
<<import-csv>>
#+end_src

#+srcname: import-csv
#+begin_src R :exports none
data <- read.csv("foo-clean.csv")
#+end_src

#+srcname: import-sql
#+begin_src R :exports none
library(RSQLite)
blah blah blah
#+end_src

* Clean
  - This is run on foo.csv, producing foo-clean.csv
  - Fixes the mess of -9 and -13 to NA for my sanity.
  - This only needs to be run once, and after that, reference.
  - How can I tell org-mode to skip this?
#+srcname: clean-csv
#+begin_src sh :exports none
sed .....
#+end_src

* Explore

** Explore by a factor (1)
   - Dead end. Did not pan out. Ignore.
   - Produces a couple of charts showing there is not interaction.
#+srcname: explore-by-a-factor-1
#+begin_src R :exports none :noweb yes
#+end_src

** Explore by a factor (2)
   - A useful exploration that I will reference later in a report.
   - Produces a couple of charts showing the interaction of my variables.
#+srcname: explore-by-a-factor-2
#+begin_src R :exports none :noweb yes
#+end_src

org-babel-execute-buffer を使用して、org-mode がコード ブロック import-sql、clean-csv、および explore-by-a-factor-1 をスキップすることを何らかの方法で認識できるようにしたいと考えています。それらはプロジェクトに関連しているため、組織ファイルにそれらが必要です。結局のところ、明日誰かがなぜ私が要因 1 による探索が役に立たないと確信したのかを知りたがるかもしれません。そのコードを保持したいので、プロットや分析などを実行できますが、実行する理由がないため、すべてを再実行するたびに実行する必要はありません。clean-csvのものと同じです。データに何をしたか (およびその理由) を文書化するために、それを使いたいのですが、毎回再実行したくありません。foo-clean.csv をインポートするだけです。

私はこれをググって、組織モードのメーリングリストのアーカイブをたくさん読んで、いくつかのアイデアを見つけることができましたが、私が望むものではありませんでした. EXPORT_SELECT_TAGS、EXPORT_EXCLUDE_TAGS は、ファイルをエクスポートするときに最適です。また、実際のソース ファイルを作成するときは、:tangle ヘッダーが適切に機能します。どちらもやりたくない。バッファを実行したいだけです。同様の方法でコード ブロックを定義して、実行または無視できるようにしたいと考えています。次のような組織変数を持つ方法を見つけたいと思います。

EXECUTE_SELECT_TAGS

このようにして、さまざまなコード ブロックにタグを付けるだけで完了できます。特定のタグを持つソース ブロックのみを使用して、ファイルを実行できればさらに良いでしょう。私はこれを行う方法を見つけることができず、org-mode で新しい機能を要求/物乞いする前に質問すると思いました。

4

2 に答える 2

8

わかった。組織のマニュアルから:

:eval ヘッダー引数を使用して、特定のコード ブロックの評価を制限できます。:eval は、「never」と「query」の 2 つの引数を受け入れます。:eval never は、コード ブロックが評価されないことを保証します。これは、危険なコード ブロックの評価から保護するのに役立ちます。:eval クエリでは、org-confirm-babel-evaluate 変数の値に関係なく、コード ブロックを実行するたびにクエリが必要になります。

だからあなたはただ追加する必要があります

:決して評価しない

実行したくないブロックのヘッダーに、ほら!

于 2011-02-03T13:40:32.913 に答える
1

私の質問に対する答えは得られませんでしたが、議論は興味深いものでした。R の組織モード ベースのテンプレートは、興味深いアイデアとして数人を襲ったようです。ソース コードを org-mode にダウンロードし、org-babel-execute-buffer を調べました。私が恐れていたように、それはまさにそれが言うことを実行するだけの単純な関数です。動作に影響を与える追加のパラメーターを渡すことは (現在) 不可能です。(私がLispをひどく読み違えていなければ、完全に可能です。)

最終的に、有用な R テンプレート システムには org-babel-execute-buffer は必要ないと判断しました。Babel の noweb 機能は非常に柔軟であり、複雑なタグ付けスキーマを開発して実行方法/タイミングを定義するのではなく、noweb を使用して実行可能なソリューションを構築できると思います。

もつれ/エクスポートの場合、タグを使用して使用可能な/正常な出力を作成できるはずです。

興味のある方へ: LiterateR

このスレッドを使ってこれを公開するのは少し失礼かもしれませんが、これが最初に質問した理由です。TemplateR は、R を少し使いやすくするための私の試みです。現時点では、単純化された 2 つの関数を備えた単なるテンプレートです。現時点での概念実証だと思います。最終的には、人々が R プロジェクトをより迅速に開発できるように、より多くのことを行うものを開発したいと考えています。TemplateR は次の方法でこれを実現します。 1. 開発の中心となる強力な構造を提供します。2. 特に再現可能な研究の領域で、一般的なタスクをサポートする組み込み関数を提供します。3. 現在のプロジェクトですぐに再利用できるテスト済みコードのスニペットを提供します。

現在、提供されているのは、基本的な構造/フレームワークと 2 つの単純な関数だけです。1. どの R パッケージが欠落しているかを (表に手動で入力した内容に基づいて) 識別し、2. プロジェクト ディレクトリ (プロット、データ、レポート) を作成します。

将来のバージョンではさらに追加される予定です。README.org と TODO.org でさらに詳しく説明しています。

于 2010-12-02T19:58:56.237 に答える