lyx_mirror/lib/examples/ja/Modules/Sweave.lyx

1615 lines
31 KiB
Plaintext
Raw Normal View History

2017-04-24 04:03:19 +00:00
#LyX 2.3 created this file. For more info see http://www.lyx.org/
2017-08-14 06:31:24 +00:00
\lyxformat 544
\begin_document
\begin_header
2016-01-12 21:30:37 +00:00
\save_transient_properties true
2019-03-25 15:32:27 +00:00
\origin /systemlyxdir/examples/ja/Modules/
\textclass bxjsarticle
\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" "IPAexMincho"
\font_sans "default" "IPAexGothic"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts true
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
2017-04-24 04:03:19 +00:00
\use_microtype false
\use_dash_ligatures false
\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_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\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
2017-10-26 22:15:49 +00:00
\use_minted 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
2017-04-24 04:03:19 +00:00
\is_math_indent 0
2017-08-14 06:31:24 +00:00
\math_numbering_side default
2017-04-24 04:03:19 +00:00
\quotes_style english
2017-10-26 22:15:49 +00:00
\dynamic_quotes 0
\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
\SpecialChar 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:"
2017-04-24 04:03:19 +00:00
literal "false"
\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コードは、\SpecialChar LaTeX
文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialChar TeX
出力内に書きこまれます。
\end_layout
\begin_layout Standard
\SpecialChar 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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
where-is-R-bin,eval=FALSE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
R.home('bin')
\end_layout
\end_inset
\end_layout
\begin_layout Standard
これらの変更を加えた後、
\family sans
ツール\SpecialChar menuseparator
再初期設定
\family default
を使って、\SpecialChar LyX
の再設定を行う必要があります。
\family typewriter
Rscript
\family default
\family sans
PATH
\family default
にない場合、
\family sans
Sweave
\family default
モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
ません)\SpecialChar LaTeX
スタイルファイル
\family sans
Sweave.sty
\family default
によって、下記のように依存関係が追加されます。
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
sweave-sty,eval=FALSE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
file.path(R.home('share'), 'texmf', 'tex', 'latex')
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Mik\SpecialChar TeX
ユーザーは、Mik\SpecialChar TeX
の設定で、Mik\SpecialChar TeX
のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
\family sans
Sweave.sty
\family default
\series bold
fancyvrb
\series default
パッケージに依存しており、
\series bold
ae
\series default
に依存する
\emph on
ことも
\emph default
あります。\SpecialChar 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
ですが、これは、\SpecialChar LyX
文書中で、
\family sans
挿入\SpecialChar menuseparator
任意設定差込枠\SpecialChar menuseparator
Sweaveオプション
\family default
か、\SpecialChar TeX
コードで書く(
\family sans
挿入\SpecialChar menuseparator
\SpecialChar TeX
コード
\family default
)ことで挿入することができます。例えば、文頭で大域オプション
\family typewriter
echo=FALSE
\family default
を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialChar LaTeX
文書中に表示されます)。
\end_layout
\begin_layout Standard
\SpecialChar LyX
でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
\family sans
コード組
\family default
環境に変更するか、あるいは、単に\SpecialChar 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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
setup, keep.source=TRUE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
## オプション「digits」は桁数(の概数)を設定できます
\end_layout
\begin_layout Plain Layout
options(width = 70, useFancyQuotes = FALSE, digits = 4)
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
sweave-manual, eval=FALSE, keep.source=TRUE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
## Sweaveのvignetteを見る (要 R >= 2.13.0)
\end_layout
\begin_layout Plain Layout
vignette("Sweave", package = "utils")
\end_layout
\end_inset
下記は、どのSエンジンでも動作する単純な例です。
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
print-integers, keep.source=TRUE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
## 1から10までの整数は
\end_layout
\begin_layout Plain Layout
1:10
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
hide-results, results=hide
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
## results=hide を設定して意図的に出力を隠す
\end_layout
\begin_layout Plain Layout
print(1:20)
\end_layout
\end_inset
単純な計算機をエミュレートすることもできます。
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
calculator
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
1 + pi
\end_layout
\begin_layout Plain Layout
sin(pi/6)
\end_layout
\end_inset
\end_layout
\begin_layout Standard
今度は、ガウシアンデータを見てみましょう。
\end_layout
\begin_layout Standard
\begin_inset Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
rnorm
\end_layout
\end_inset
\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
\end_inset
\end_layout
\begin_layout Standard
数値を標準テキストに簡単に統合させることができます。これは、
\family typewriter
\backslash
Sexpr{}
\family default
コマンドによって行われ、\SpecialChar LyX
中の対応するメニューは
\family sans
挿入\SpecialChar menuseparator
任意設定差込枠\SpecialChar menuseparator
S/R表現
\family default
ですが、\SpecialChar 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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
iris-summary
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
summary(iris[,-5])
\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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
xtable-demo,results=tex,echo=FALSE
\end_layout
\end_inset
\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
\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
)で包まれるのではなく、生の\SpecialChar 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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
pairs(iris, col = iris$Species)
\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 Flex Chunk
status open
\begin_layout Plain Layout
\begin_inset Argument 1
status open
\begin_layout Plain Layout
iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T
\end_layout
\end_inset
\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
\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
モジュールは、\SpecialChar LyX
文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialChar LyX
は、そのような文書を取り扱う特定の変換子を使って処理します
(取扱説明書カスタマイズ篇参照)。
\family sans
Sweave
\family default
モジュールは、
\family sans
sweave
\family default
変換子を使用しますが、これは、\SpecialChar LyX
\family sans
scripts
\family default
ディレクトリ下にあるRスクリプト
\family sans
lyxsweave.R
\family default
が本体になっています。このスクリプトは、\SpecialChar LyX
から
\family sans
Rnw
\family default
文書を受け取り、これを\SpecialChar TeX
文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialChar LyX
が面倒を見ます。
\end_layout
\begin_layout Standard
\family sans
sweave
\family default
形式から\SpecialChar 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
\SpecialChar LyX
ライブラリディレクトリ
\family typewriter
$$s
\family default
は、
\family sans
ヘルプ\SpecialChar menuseparator
\SpecialChar LyX
について
\family default
メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialChar 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
\SpecialChar 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コード組は、\SpecialChar LyX
文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
\family typewriter
getwd()
\family default
を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
\end_layout
\begin_layout Enumerate
\SpecialChar LaTeX
\family sans
Sweave.sty
\family default
を検出できないと、このRスクリプトが自動的に
\family sans
Sweave.sty
\family default
を一時ディレクトリにコピーし、そこで\SpecialChar LaTeX
コンパイルを実行します。
\end_layout
\begin_layout Enumerate
Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
\begin_inset CommandInset href
LatexCommand href
name "#7551"
target "https://www.lyx.org/trac/ticket/7551"
2017-04-24 04:03:19 +00:00
literal "false"
\end_inset
)として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialChar 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
\SpecialChar LyX
は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突をもたら
す可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
\series bold
ae
\series default
パッケージを手動で読み込ませることができます。
\end_layout
\begin_layout Section
問題の解決法
\end_layout
\begin_layout Standard
\SpecialChar 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
もうひとつ知られている問題点は、\SpecialChar LyX
中でコード組段落の配置に(
\family sans
段落設定
\family default
を使用して)手を加えた場合、\SpecialChar 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
2017-10-26 22:15:49 +00:00
https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf
\end_layout
\end_inset
にあります。「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweave関連パッケージの一覧があります。
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://cran.r-project.org/web/views/ReproducibleResearch.html
\end_layout
\end_inset
をご覧ください。\SpecialChar LyX
とSweaveに関する質問は、\SpecialChar LyX
メーリングリスト(
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://www.lyx.org/MailingLists
\end_layout
\end_inset
)に投稿してください。さらに多くの\SpecialChar 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を使うと、\SpecialChar LyX
では\SpecialChar 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
\SpecialChar LyX
についてでチェックできます)の
\family sans
scripts
\family default
ディレクトリ下に置いてください。\SpecialChar LyX
は自身の
\emph on
ライブラリディレクトリ
\emph default
を見に行く前に
\emph on
ユーザーディレクトリ
\emph default
をチェックしますので、Rスクリプト
\family sans
lyxsweave.R
\family default
がユーザーディレクトリで検出されれば、それが使用されます。\SpecialChar LyX
ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialChar 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