lyx_mirror/lib/examples/ja/sweave.lyx

1509 lines
30 KiB
Plaintext
Raw Normal View History

#LyX 2.0 created this file. For more info see http://www.lyx.org/
\lyxformat 413
\begin_document
\begin_header
\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 JIS-pLaTeX
\fontencoding global
\font_roman palatino
\font_sans lmss
\font_typewriter lmtt
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_amsmath 1
\use_esint 1
\use_mhchem 1
\use_mathdots 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\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
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コードは、LaTeX文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、TeX出力内に書きこまれます。
\end_layout
\begin_layout Standard
LyX 2.0以降、
\family sans
Sweave
\family default
モジュールを使えば、どの文書クラスでも、特別な設定なしにSweaveを使うことができるようになりました。したがって、以前のように、
\family sans
設定
\family default
ファイルを手動で変更したり、
\family sans
literate-article.layout
\family default
\family sans
literate-book.layout
\family default
のような特別なレイアウトを追加したりすることは、もう必要なくなりました。
\family sans
Sweave
\family default
モジュールは、
\family sans
文書\SpecialChar \menuseparator
設定\SpecialChar \menuseparator
モジュール
\family default
でLyX文書に追加できます。この取扱説明書では、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
を使って、LyXの再設定を行う必要があります。
\family typewriter
Rscript
\family default
\family sans
PATH
\family default
にない場合、
\family sans
Sweave
\family default
モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
ません)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
MikTeXユーザーは、MikTeXの設定で、MikTeXのルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
\family sans
Sweave.sty
\family default
\series bold
fancyvrb
\series default
パッケージに依存しており、
\series bold
ae
\series default
に依存する
\emph on
ことも
\emph default
あります。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
であり、LyX文書中で、
\family sans
挿入\SpecialChar \menuseparator
任意設定差込枠\SpecialChar \menuseparator
Sweaveオプション
\family default
か、TeXコードで書く(
\family sans
挿入\SpecialChar \menuseparator
TeXコード
\family default
)ことで挿入することができます。例えば、すべてのRコードを抑制するために、文頭で大域オプション
\family typewriter
echo=FALSE
\family default
を設定することもできます(既定では、Rコードとその出力は、LaTeX文書中に表示されます)。
\end_layout
\begin_layout Standard
LyXでRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
\family sans
コード組(chunk)
\family default
環境に変更するか、あるいは、単に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
コマンドによって行われ、LyX中の対応するメニューは
\family sans
挿入\SpecialChar \menuseparator
任意設定差込枠\SpecialChar \menuseparator
S/R表現
\family default
ですが、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
\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
)で包まれるのではなく、生の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 ERT
status open
\begin_layout Plain Layout
<<iris-pairs,fig=TRUE,width=4.5,height=4.5>>=
\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
\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>>=
\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
\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
モジュールは、LyX文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、LyXは、そのような文書を取り扱う特定の変換子を使っ
て処理します(取扱説明書カスタマイズ篇参照)。
\family sans
Sweave
\family default
モジュールは、
\family sans
sweave
\family default
変換子を使用しますが、これは、LyXの
\family sans
scripts
\family default
ディレクトリ下にあるRスクリプト
\family sans
lyxsweave.R
\family default
が本体になっています。このスクリプトは、LyXから
\family sans
Rnw
\family default
文書を受け取り、これをTeX文書に変換するためにSweaveを呼び出します。その後の作業は、LyXが面倒を見ます。
\end_layout
\begin_layout Standard
\family sans
sweave
\family default
形式から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
LyXライブラリディレクトリ
\family typewriter
$$s
\family default
は、
\family sans
ヘルプ\SpecialChar \menuseparator
LyXについて
\family default
メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、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
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コード塊は、LyX文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード塊に
\family typewriter
getwd()
\family default
を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
\end_layout
\begin_layout Enumerate
LaTeXが
\family sans
Sweave.sty
\family default
を検出できないと、このRスクリプトが自動的に
\family sans
Sweave.sty
\family default
を一時ディレクトリにコピーし、そこで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
)として、ファイル名(拡張子を除く)にピリオドが含まれている場合、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
LyXは、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
\series bold
ae
\series default
パッケージを手動で読み込ませることができます。
\end_layout
\begin_layout Section
問題の解決法
\end_layout
\begin_layout Standard
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
もうひとつ知られている問題点は、LyX中でコード組段落の配置に(
\family sans
段落設定
\family default
を使用して)手を加えた場合、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
をご覧ください。LyXとSweaveに関する質問は、LyXメーリングリスト(
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://www.lyx.org/MailingLists
\end_layout
\end_inset
)に投稿してください。さらに多くの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を使うと、LyXではLaTeXエラーが発生します。その理由は、生のRコードやR出力を含むbeamerフレームには、
\family typewriter
fragile
\family default
オプションを付けなくてはならないためです。しかしながら、現在のところ、これを行う率直な方法はありません。方法として考えられるのは、生のTeXコードを書くか、
\begin_inset CommandInset href
LatexCommand href
name "#7273"
target "http://www.lyx.org/trac/ticket/7273"
\end_inset
で議論されているように
\family sans
beamer-fragile.module
\family default
を使うかです(このファイルをLyXユーザーディレクトリの
\family sans
layouts
\family default
ディレクトリ下に置き、LyXを再初期設定してください)。このモジュールをお使いの文書に取り込んだ後、
\family sans
挿入\SpecialChar \menuseparator
任意設定差込枠\SpecialChar \menuseparator
FragileFrame
\family default
を選択すれば、
\family typewriter
\backslash
begin{frame}[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
LyXについてでチェックできます)の
\family sans
scripts
\family default
ディレクトリ下に置いてください。LyXは自身の
\emph on
ライブラリディレクトリ
\emph default
を見に行く前に
\emph on
ユーザーディレクトリ
\emph default
をチェックしますので、Rスクリプト
\family sans
lyxsweave.R
\family default
がユーザーディレクトリで検出されれば、それが使用されます。LyXライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、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