lyx_mirror/lib/examples/ja/sweave.lyx
Guillaume Munch 4a1e158c95 Update docs
2016-01-12 21:30:37 +00:00

1542 lines
31 KiB
Plaintext

#LyX 2.2 created this file. For more info see http://www.lyx.org/
\lyxformat 504
\begin_document
\begin_header
\save_transient_properties true
\origin /systemlyxdir/examples/ja/
\textclass jarticle
\begin_preamble
%% maxwidth is the original width if it's less than linewidth
%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
\def\maxwidth{%
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi
}
\end_preamble
\options nogin
\use_default_options true
\begin_modules
sweave
\end_modules
\maintain_unincluded_children false
\language japanese
\language_package none
\inputencoding utf8-platex
\fontencoding global
\font_roman "palatino" "default"
\font_sans "lmss" "default"
\font_typewriter "lmtt" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\graphics default
\default_output_format pdf
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 0
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 0
\use_package mhchem 1
\use_package stackrel 0
\use_package stmaryrd 0
\use_package undertilde 0
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 0
\index Index
\shortcut idx
\color #008000
\end_index
\leftmargin 3cm
\topmargin 3cm
\rightmargin 3cm
\bottommargin 3cm
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
%
\backslash
SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
%%
\backslash
maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
\end_layout
\begin_layout Plain Layout
\backslash
setkeys{Gin}{width=
\backslash
maxwidth}
\end_layout
\end_inset
\end_layout
\begin_layout Title
\SpecialCharNoPassThru LyX
でSweaveを使うには
\end_layout
\begin_layout Author
Yihui Xie
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
アイオワ州立大学統計学部、電子メール:
\begin_inset CommandInset href
LatexCommand href
name "xie@yihui.name"
target "xie@yihui.name"
type "mailto:"
\end_inset
\end_layout
\end_inset
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
and
\end_layout
\end_inset
Gregor Gorjanc
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
and
\end_layout
\end_inset
Jean-Marc Lasgouttes
\end_layout
\begin_layout Standard
Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.r-project.org
\end_layout
\end_inset
)ツールです。Rコードは、\SpecialCharNoPassThru LaTeX
文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialCharNoPassThru TeX
出力内に書きこまれます。
\end_layout
\begin_layout Standard
\SpecialCharNoPassThru LyX
2.0以降では、
\family sans
Sweave
\family default
モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
\family sans
Sweave
\family default
モジュールを文書に加えるには、
\family sans
文書\SpecialChar menuseparator
設定\SpecialChar menuseparator
モジュール
\family default
を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://github.com/downloads/yihui/lyx/sweave.pdf
\end_layout
\end_inset
にあります。
\end_layout
\begin_layout Section
システム要件
\end_layout
\begin_layout Standard
\family sans
Sweave
\family default
モジュールは、実行ファイル
\family typewriter
Rscript
\family default
に依存しますので、このファイルが、システムの
\family sans
PATH
\family default
変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
ません。Windowsにおける
\family sans
PATH
\family default
が何かわからない場合には、R言語のリポジトリ
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://github.com/yihui/lyx
\end_layout
\end_inset
にあるRスクリプト
\family sans
add-R-path-win.R
\family default
を使って、パスを自動的に変更するか(推奨はできません。何にせよ
\family sans
PATH
\family default
が何かくらいは勉強すべきです)、あるいは
\family sans
ツール\SpecialChar menuseparator
設定\SpecialChar menuseparator
パス\SpecialChar menuseparator
パス接頭辞
\family default
からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
\family sans
C:
\backslash
Program Files
\backslash
R
\backslash
R-x.x.x
\backslash
bin
\family default
のような形をしており、R内で下記のようにして確認することができます。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<where-is-R-bin,eval=FALSE>>=
\end_layout
\begin_layout Plain Layout
R.home('bin')
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
これらの変更を加えた後、
\family sans
ツール\SpecialChar menuseparator
再初期設定
\family default
を使って、\SpecialCharNoPassThru LyX
の再設定を行う必要があります。
\family typewriter
Rscript
\family default
\family sans
PATH
\family default
にない場合、
\family sans
Sweave
\family default
モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
ません)\SpecialCharNoPassThru LaTeX
スタイルファイル
\family sans
Sweave.sty
\family default
によって、下記のように依存関係が追加されます。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<sweave-sty,eval=FALSE>>=
\end_layout
\begin_layout Plain Layout
file.path(R.home('share'), 'texmf', 'tex', 'latex')
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Mik\SpecialCharNoPassThru TeX
ユーザーは、Mik\SpecialCharNoPassThru TeX
の設定で、Mik\SpecialCharNoPassThru TeX
のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
\family sans
Sweave.sty
\family default
\series bold
fancyvrb
\series default
パッケージに依存しており、
\series bold
ae
\series default
に依存する
\emph on
ことも
\emph default
あります。\SpecialCharNoPassThru LyX
\family sans
Sweave.sty
\family default
を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
\end_layout
\begin_layout Section
Sweaveの用例
\end_layout
\begin_layout Standard
Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
\family typewriter
\backslash
SweaveOpts{}
\family default
ですが、これは、\SpecialCharNoPassThru LyX
文書中で、
\family sans
挿入\SpecialChar menuseparator
任意設定差込枠\SpecialChar menuseparator
Sweaveオプション
\family default
か、\SpecialCharNoPassThru TeX
コードで書く(
\family sans
挿入\SpecialChar menuseparator
\SpecialCharNoPassThru TeX
コード
\family default
)ことで挿入することができます。例えば、文頭で大域オプション
\family typewriter
echo=FALSE
\family default
を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialCharNoPassThru LaTeX
文書中に表示されます)。
\end_layout
\begin_layout Standard
\SpecialCharNoPassThru LyX
でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
\family sans
コード組
\family default
環境に変更するか、あるいは、単に\SpecialCharNoPassThru TeX
コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
\end_layout
\begin_layout Standard
例えば
\family typewriter
width
\family default
\family typewriter
useFancyQuotes
\family default
のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
。詳細については、Rに添付のSweave取扱説明書をお読みください。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<setup, keep.source=TRUE>>=
\end_layout
\begin_layout Plain Layout
## オプション「digits」は桁数(の概数)を設定できます
\end_layout
\begin_layout Plain Layout
options(width = 70, useFancyQuotes = FALSE, digits = 4)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\begin_layout Plain Layout
<<sweave-manual, eval=FALSE, keep.source=TRUE>>=
\end_layout
\begin_layout Plain Layout
## Sweaveのvignetteを見る (要 R >= 2.13.0)
\end_layout
\begin_layout Plain Layout
vignette("Sweave", package = "utils")
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
下記は、どのSエンジンでも動作する単純な例です。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<print-integers, keep.source=TRUE>>=
\end_layout
\begin_layout Plain Layout
## 1から10までの整数は
\end_layout
\begin_layout Plain Layout
1:10
\end_layout
\begin_layout Plain Layout
@
\end_layout
\begin_layout Plain Layout
<<hide-results, results=hide>>=
\end_layout
\begin_layout Plain Layout
## results=hide を設定して意図的に出力を隠す
\end_layout
\begin_layout Plain Layout
print(1:20)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
単純な計算機をエミュレートすることもできます。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<calculator>>=
\end_layout
\begin_layout Plain Layout
1 + pi
\end_layout
\begin_layout Plain Layout
sin(pi/6)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
今度は、ガウシアンデータを見てみましょう。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<rnorm>>=
\end_layout
\begin_layout Plain Layout
set.seed(123) # 再現可能性のため
\end_layout
\begin_layout Plain Layout
x <- rnorm(20)
\end_layout
\begin_layout Plain Layout
print(x)
\end_layout
\begin_layout Plain Layout
t1 <- t.test(x)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
数値を標準テキストに簡単に統合させることができます。これは、
\family typewriter
\backslash
Sexpr{}
\family default
コマンドによって行われ、\SpecialCharNoPassThru LyX
中の対応するメニューは
\family sans
挿入\SpecialChar menuseparator
任意設定差込枠\SpecialChar menuseparator
S/R表現
\family default
ですが、\SpecialCharNoPassThru TeX
コードを使うこともできます。例えば、ベクトル
\family typewriter
x
\family default
の第3要素は、
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
x[3]
\end_layout
\end_inset
(すなわち
\family typewriter
x[3]
\family default
)であり、検定の
\begin_inset Formula $p$
\end_inset
値は
\begin_inset Flex S/R expression
status collapsed
\begin_layout Plain Layout
format.pval(t1$p.value)
\end_layout
\end_inset
です。これらの数値は、R中で
\emph on
round()
\emph default
のようなコマンドを使うことによって丸めることもできます。
\end_layout
\begin_layout Standard
\family roman
\series medium
\shape up
\size normal
\emph off
\bar no
\noun off
\color none
今度は、
\family typewriter
\series default
\shape default
\size default
\emph default
\bar default
\noun default
\color inherit
iris
\family roman
\series medium
\shape up
\size normal
\emph off
\bar no
\noun off
\color none
データセットの要約を見てみましょう。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<iris-summary>>=
\end_layout
\begin_layout Plain Layout
summary(iris[,-5])
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float table
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\family typewriter
iris
\family default
データの最初の4変数の分位数
\begin_inset CommandInset label
LatexCommand label
name "tab:xtable-demo"
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\begin_inset ERT
status open
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
<<xtable-demo,results=tex,echo=FALSE>>=
\end_layout
\begin_layout Plain Layout
if (require('xtable')) {
\end_layout
\begin_layout Plain Layout
print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
\end_layout
\begin_layout Plain Layout
} else cat('the xtable package is not available! please install.packages("xtable"
)')
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
\series bold
xtable
\series default
パッケージを使って綺麗にしてやるといいでしょう。表
\begin_inset CommandInset ref
LatexCommand ref
reference "tab:xtable-demo"
\end_inset
は、Sweaveでの
\series bold
xtable
\series default
パッケージの使い方を示すための例です。コード組のオプション
\family typewriter
results=tex
\family default
は、R出力が、特別な環境(
\family typewriter
Soutput
\family default
)で包まれるのではなく、生の\SpecialCharNoPassThru LaTeX
コードとして書き出されるように保証するためのものです。
\end_layout
\begin_layout Standard
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:iris-pairs"
\end_inset
と図
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:iris-boxplots"
\end_inset
は、Sweaveを使って画像を生成する簡単な例です。
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Note Note
status open
\begin_layout Plain Layout
epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
<<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
\end_layout
\begin_layout Plain Layout
pairs(iris, col = iris$Species)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\family typewriter
iris
\family default
データの散布図マトリックス
\begin_inset CommandInset label
LatexCommand label
name "fig:iris-pairs"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset ERT
status open
\begin_layout Plain Layout
<<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
\end_layout
\begin_layout Plain Layout
par(mar=c(4,5,.1,.3), las=1)
\end_layout
\begin_layout Plain Layout
boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
種でグループ化された萼片の長さのボックスプロット
\begin_inset CommandInset label
LatexCommand label
name "fig:iris-boxplots"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
\family typewriter
R CMD Stangle
\family default
を使って行われます。
\end_layout
\begin_layout Section
\family sans
Sweave
\family default
モジュール
\end_layout
\begin_layout Standard
\family sans
Sweave
\family default
モジュールは、\SpecialCharNoPassThru LyX
文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialCharNoPassThru LyX
は、そのような文書を取り扱う特定の変換子を使っ
て処理します(取扱説明書カスタマイズ篇参照)。
\family sans
Sweave
\family default
モジュールは、
\family sans
sweave
\family default
変換子を使用しますが、これは、\SpecialCharNoPassThru LyX
\family sans
scripts
\family default
ディレクトリ下にあるRスクリプト
\family sans
lyxsweave.R
\family default
が本体になっています。このスクリプトは、\SpecialCharNoPassThru LyX
から
\family sans
Rnw
\family default
文書を受け取り、これを\SpecialCharNoPassThru TeX
文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialCharNoPassThru LyX
が面倒を見ます。
\end_layout
\begin_layout Standard
\family sans
sweave
\family default
形式から\SpecialCharNoPassThru LaTeX
への変換子は、下記のコマンド行でRを呼び出します。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
begin{verbatim}
\end_layout
\begin_layout Plain Layout
Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
$$r
\end_layout
\begin_layout Plain Layout
\backslash
end{verbatim}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\SpecialCharNoPassThru LyX
ライブラリディレクトリ
\family typewriter
$$s
\family default
は、
\family sans
ヘルプ\SpecialChar menuseparator
\SpecialCharNoPassThru LyX
について
\family default
メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialCharNoPassThru LyX
取扱説明書カスタマイズ篇には、
\family typewriter
$$i
\family default
\family typewriter
$$o
\family default
\family typewriter
$$e
\family default
\family typewriter
$$r
\family default
についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
があります。
\end_layout
\begin_layout Enumerate
\SpecialCharNoPassThru LyX
文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
\family typewriter
ISO-8859-15
\family default
\family typewriter
UTF-8
\family default
などです。エンコーディングは、Rが
\family sans
Rnw
\family default
文書を正しく読むのに使用されます。
\end_layout
\begin_layout Enumerate
Sweave文書内のRコード組は、\SpecialCharNoPassThru LyX
文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
\family typewriter
getwd()
\family default
を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
\end_layout
\begin_layout Enumerate
\SpecialCharNoPassThru LaTeX
\family sans
Sweave.sty
\family default
を検出できないと、このRスクリプトが自動的に
\family sans
Sweave.sty
\family default
を一時ディレクトリにコピーし、そこで\SpecialCharNoPassThru LaTeX
コンパイルを実行します。
\end_layout
\begin_layout Enumerate
Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
\begin_inset CommandInset href
LatexCommand href
name "#7551"
target "http://www.lyx.org/trac/ticket/7551"
\end_inset
)として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialCharNoPassThru LaTeX
がそのファイルを
\family typewriter
\backslash
includegraphics{}
\family default
で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
aveで直接的に解決することもができます。Sweaveオプションの
\family typewriter
prefix.string
\family default
を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
\end_layout
\begin_layout Standard
Sweaveパッケージには、事前に
\family typewriter
noae
\family default
オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
begin{verbatim}
\end_layout
\begin_layout Plain Layout
\backslash
RequirePackage[T1]{fontenc}
\end_layout
\begin_layout Plain Layout
\backslash
RequirePackage{ae}
\end_layout
\begin_layout Plain Layout
\backslash
end{verbatim}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\SpecialCharNoPassThru LyX
は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
\series bold
ae
\series default
パッケージを手動で読み込ませることができます。
\end_layout
\begin_layout Section
問題の解決法
\end_layout
\begin_layout Standard
\SpecialCharNoPassThru LyX
2.0以降、コンパイル中の詳細な情報を、
\family sans
表示\SpecialChar menuseparator
メッセージを表示
\family default
で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
begin{verbatim}
\end_layout
\begin_layout Plain Layout
17:58:47.868: Processing code chunks with options ...
\end_layout
\begin_layout Plain Layout
17:58:47.885: 1 : echo keep.source term verbatim (label=setup)
\end_layout
\begin_layout Plain Layout
17:58:47.889: 2 : echo keep.source (label=sweave-manual)
\end_layout
\begin_layout Plain Layout
17:58:47.908: 3 : echo keep.source term verbatim (label=print-integers)
\end_layout
\begin_layout Plain Layout
....
\end_layout
\begin_layout Plain Layout
17:58:47.941: Loading required package: xtable
\end_layout
\begin_layout Plain Layout
17:58:47.976: 9 : echo term verbatim pdf (label=iris-pairs)
\end_layout
\begin_layout Plain Layout
....
\end_layout
\begin_layout Plain Layout
17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
\end_layout
\begin_layout Plain Layout
\backslash
end{verbatim}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\family typewriter
label=
\family default
の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
\end_layout
\begin_layout Standard
もうひとつ知られている問題点は、\SpecialCharNoPassThru LyX
中でコード組段落の配置に(
\family sans
段落設定
\family default
を使用して)手を加えた場合、\SpecialCharNoPassThru LyX
は、改行しないでコード組の前に
\family typewriter
\backslash
centering{}
\family default
のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
begin{verbatim}
\end_layout
\begin_layout Plain Layout
\backslash
centering{}<<xtable-demo,results=tex,echo=FALSE>>=
\end_layout
\begin_layout Plain Layout
\backslash
end{verbatim}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\family typewriter
<<>>=
\family default
は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
\family sans
表示\SpecialChar menuseparator
ソースを表示
\family default
で、実際のソースコードを再確認し、
\family typewriter
<<>>=
\family default
が改行後に現れるようにすることをお勧めします。表
\begin_inset CommandInset ref
LatexCommand ref
reference "tab:xtable-demo"
\end_inset
のコード組に手動で空行が追加されているのは、このためです。
\end_layout
\begin_layout Section
リソース
\end_layout
\begin_layout Standard
Sweaveのホームページは、
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.stat.uni-muenchen.de/~leisch/Sweave/
\end_layout
\end_inset
にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
e関連パッケージの一覧があります。
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://cran.r-project.org/web/views/ReproducibleResearch.html
\end_layout
\end_inset
をご覧ください。\SpecialCharNoPassThru LyX
とSweaveに関する質問は、\SpecialCharNoPassThru LyX
メーリングリスト(
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/MailingLists
\end_layout
\end_inset
)に投稿してください。さらに多くの\SpecialCharNoPassThru LyX
の用例は、
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://github.com/yihui/lyx
\end_layout
\end_inset
にあります。
\end_layout
\begin_layout Section
FAQ
\end_layout
\begin_layout Subsection
Sweaveをbeamerで使うにはどうすればよいでしょうか
\end_layout
\begin_layout Standard
beamerのスライドでSweaveを使うと、\SpecialCharNoPassThru LyX
では\SpecialCharNoPassThru LaTeX
エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決す
るには、通常のフレームの代わりに脆弱フレームを使うか、フレーム表題に
\family sans
挿入\SpecialChar menuseparator
フレームオプション
\family default
を使って、
\family typewriter
fragile
\family default
オプションを渡します。
\end_layout
\begin_layout Subsection
Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
\end_layout
\begin_layout Standard
もちろんです。まず、前述のRスクリプト
\family typewriter
$$s
\family sans
/scripts/lyxsweave.R
\family default
がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
\emph on
Sweave()
\emph default
をどのように使っているかを見てください)。その後、カスタマイズした
\family sans
lyxsweave.R
\family default
をあなたの
\emph on
ユーザーディレクトリ
\emph default
(ヘルプ\SpecialChar menuseparator
\SpecialCharNoPassThru LyX
についてでチェックできます)の
\family sans
scripts
\family default
ディレクトリ下に置いてください。\SpecialCharNoPassThru LyX
は自身の
\emph on
ライブラリディレクトリ
\emph default
を見に行く前に
\emph on
ユーザーディレクトリ
\emph default
をチェックしますので、Rスクリプト
\family sans
lyxsweave.R
\family default
がユーザーディレクトリで検出されれば、それが使用されます。\SpecialCharNoPassThru LyX
ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialCharNoPassThru LyX
更新時に修正したスクリプ
トが上書きされてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
\end_layout
\begin_layout Standard
なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
\series bold
knitr
\series default
パッケージもサポートされており、対応するモジュール名は
\family sans
Rnw (knitr)
\family default
となっています。
\end_layout
\end_body
\end_document