]> git.lyx.org Git - lyx.git/blob - lib/examples/ja/sweave.lyx
Update docs to latest format for 2.2.0alpha2
[lyx.git] / lib / examples / ja / sweave.lyx
1 #LyX 2.2 created this file. For more info see http://www.lyx.org/
2 \lyxformat 503
3 \begin_document
4 \begin_header
5 \origin /systemlyxdir/examples/ja/
6 \textclass jarticle
7 \begin_preamble
8 %% maxwidth is the original width if it's less than linewidth
9 %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
10 \def\maxwidth{%
11 \ifdim\Gin@nat@width>\linewidth
12 \linewidth
13 \else
14 \Gin@nat@width
15 \fi
16 }
17 \end_preamble
18 \options nogin
19 \use_default_options true
20 \begin_modules
21 sweave
22 \end_modules
23 \maintain_unincluded_children false
24 \language japanese
25 \language_package none
26 \inputencoding utf8-platex
27 \fontencoding global
28 \font_roman "palatino" "default"
29 \font_sans "lmss" "default"
30 \font_typewriter "lmtt" "default"
31 \font_math "auto" "auto"
32 \font_default_family default
33 \use_non_tex_fonts false
34 \font_sc false
35 \font_osf false
36 \font_sf_scale 100 100
37 \font_tt_scale 100 100
38 \graphics default
39 \default_output_format pdf
40 \output_sync 0
41 \bibtex_command default
42 \index_command default
43 \paperfontsize default
44 \spacing single
45 \use_hyperref false
46 \papersize default
47 \use_geometry true
48 \use_package amsmath 1
49 \use_package amssymb 1
50 \use_package cancel 0
51 \use_package esint 1
52 \use_package mathdots 1
53 \use_package mathtools 0
54 \use_package mhchem 1
55 \use_package stackrel 0
56 \use_package stmaryrd 0
57 \use_package undertilde 0
58 \cite_engine basic
59 \cite_engine_type default
60 \biblio_style plain
61 \use_bibtopic false
62 \use_indices false
63 \paperorientation portrait
64 \suppress_date false
65 \justification true
66 \use_refstyle 0
67 \index Index
68 \shortcut idx
69 \color #008000
70 \end_index
71 \leftmargin 3cm
72 \topmargin 3cm
73 \rightmargin 3cm
74 \bottommargin 3cm
75 \secnumdepth 3
76 \tocdepth 3
77 \paragraph_separation indent
78 \paragraph_indentation default
79 \quotes_language english
80 \papercolumns 1
81 \papersides 1
82 \paperpagestyle default
83 \tracking_changes false
84 \output_changes false
85 \html_math_output 0
86 \html_css_as_file 0
87 \html_be_strict false
88 \end_header
89
90 \begin_body
91
92 \begin_layout Standard
93 \begin_inset ERT
94 status open
95
96 \begin_layout Plain Layout
97
98 %
99 \backslash
100 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
101 \end_layout
102
103 \end_inset
104
105
106 \end_layout
107
108 \begin_layout Standard
109 \begin_inset ERT
110 status open
111
112 \begin_layout Plain Layout
113
114 %% 
115 \backslash
116 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
117 \end_layout
118
119 \begin_layout Plain Layout
120
121
122 \backslash
123 setkeys{Gin}{width=
124 \backslash
125 maxwidth}
126 \end_layout
127
128 \end_inset
129
130
131 \end_layout
132
133 \begin_layout Title
134 \SpecialCharNoPassThru LyX
135 でSweaveを使うには
136 \end_layout
137
138 \begin_layout Author
139 Yihui Xie
140 \begin_inset Foot
141 status collapsed
142
143 \begin_layout Plain Layout
144 アイオワ州立大学統計学部、電子メール: 
145 \begin_inset CommandInset href
146 LatexCommand href
147 name "xie@yihui.name"
148 target "xie@yihui.name"
149 type "mailto:"
150
151 \end_inset
152
153
154 \end_layout
155
156 \end_inset
157
158  
159 \begin_inset ERT
160 status collapsed
161
162 \begin_layout Plain Layout
163
164
165 \backslash
166 and
167 \end_layout
168
169 \end_inset
170
171  Gregor Gorjanc 
172 \begin_inset ERT
173 status collapsed
174
175 \begin_layout Plain Layout
176
177
178 \backslash
179 and
180 \end_layout
181
182 \end_inset
183
184  Jean-Marc Lasgouttes
185 \end_layout
186
187 \begin_layout Standard
188 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
189 \begin_inset Flex URL
190 status collapsed
191
192 \begin_layout Plain Layout
193
194 http://www.r-project.org
195 \end_layout
196
197 \end_inset
198
199 )ツールです。Rコードは、\SpecialCharNoPassThru LaTeX
200 文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialCharNoPassThru TeX
201 出力内に書きこまれます。
202 \end_layout
203
204 \begin_layout Standard
205 \SpecialCharNoPassThru LyX
206  2.0以降では、
207 \family sans
208 Sweave
209 \family default
210 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
211 \family sans
212 Sweave
213 \family default
214 モジュールを文書に加えるには、
215 \family sans
216 文書\SpecialChar menuseparator
217 設定\SpecialChar menuseparator
218 モジュール
219 \family default
220 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
221 \begin_inset Flex URL
222 status collapsed
223
224 \begin_layout Plain Layout
225
226 https://github.com/downloads/yihui/lyx/sweave.pdf
227 \end_layout
228
229 \end_inset
230
231 にあります。
232 \end_layout
233
234 \begin_layout Section
235 システム要件
236 \end_layout
237
238 \begin_layout Standard
239
240 \family sans
241 Sweave
242 \family default
243 モジュールは、実行ファイル
244 \family typewriter
245 Rscript
246 \family default
247 に依存しますので、このファイルが、システムの
248 \family sans
249 PATH
250 \family default
251 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
252 ません。Windowsにおける
253 \family sans
254 PATH
255 \family default
256 が何かわからない場合には、R言語のリポジトリ
257 \begin_inset Flex URL
258 status collapsed
259
260 \begin_layout Plain Layout
261
262 https://github.com/yihui/lyx
263 \end_layout
264
265 \end_inset
266
267 にあるRスクリプト
268 \family sans
269 add-R-path-win.R
270 \family default
271 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
272 \family sans
273 PATH
274 \family default
275 が何かくらいは勉強すべきです)、あるいは
276 \family sans
277 ツール\SpecialChar menuseparator
278 設定\SpecialChar menuseparator
279 パス\SpecialChar menuseparator
280 パス接頭辞
281 \family default
282 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
283 \family sans
284 C:
285 \backslash
286 Program Files
287 \backslash
288 R
289 \backslash
290 R-x.x.x
291 \backslash
292 bin
293 \family default
294 のような形をしており、R内で下記のようにして確認することができます。
295 \end_layout
296
297 \begin_layout Standard
298 \begin_inset ERT
299 status open
300
301 \begin_layout Plain Layout
302
303 <<where-is-R-bin,eval=FALSE>>=
304 \end_layout
305
306 \begin_layout Plain Layout
307
308 R.home('bin')
309 \end_layout
310
311 \begin_layout Plain Layout
312
313 @
314 \end_layout
315
316 \end_inset
317
318
319 \end_layout
320
321 \begin_layout Standard
322 これらの変更を加えた後、
323 \family sans
324 ツール\SpecialChar menuseparator
325 再初期設定
326 \family default
327 を使って、\SpecialCharNoPassThru LyX
328 の再設定を行う必要があります。
329 \family typewriter
330 Rscript
331 \family default
332
333 \family sans
334 PATH
335 \family default
336 にない場合、
337 \family sans
338 Sweave
339 \family default
340 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
341 ません)\SpecialCharNoPassThru LaTeX
342 スタイルファイル
343 \family sans
344 Sweave.sty
345 \family default
346 によって、下記のように依存関係が追加されます。
347 \end_layout
348
349 \begin_layout Standard
350 \begin_inset ERT
351 status open
352
353 \begin_layout Plain Layout
354
355 <<sweave-sty,eval=FALSE>>=
356 \end_layout
357
358 \begin_layout Plain Layout
359
360 file.path(R.home('share'), 'texmf', 'tex', 'latex')
361 \end_layout
362
363 \begin_layout Plain Layout
364
365 @
366 \end_layout
367
368 \end_inset
369
370
371 \end_layout
372
373 \begin_layout Standard
374 Mik\SpecialCharNoPassThru TeX
375 ユーザーは、Mik\SpecialCharNoPassThru TeX
376 の設定で、Mik\SpecialCharNoPassThru TeX
377 のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
378 \family sans
379 Sweave.sty
380 \family default
381
382 \series bold
383 fancyvrb
384 \series default
385 パッケージに依存しており、
386 \series bold
387 ae
388 \series default
389 に依存する
390 \emph on
391 ことも
392 \emph default
393 あります。\SpecialCharNoPassThru LyX
394
395 \family sans
396 Sweave.sty
397 \family default
398 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
399 \end_layout
400
401 \begin_layout Section
402 Sweaveの用例
403 \end_layout
404
405 \begin_layout Standard
406 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
407 \family typewriter
408
409 \backslash
410 SweaveOpts{}
411 \family default
412 ですが、これは、\SpecialCharNoPassThru LyX
413 文書中で、
414 \family sans
415 挿入\SpecialChar menuseparator
416 任意設定差込枠\SpecialChar menuseparator
417 Sweaveオプション
418 \family default
419 か、\SpecialCharNoPassThru TeX
420 コードで書く(
421 \family sans
422 挿入\SpecialChar menuseparator
423 \SpecialCharNoPassThru TeX
424 コード
425 \family default
426 )ことで挿入することができます。例えば、文頭で大域オプション
427 \family typewriter
428 echo=FALSE
429 \family default
430 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialCharNoPassThru LaTeX
431 文書中に表示されます)。
432 \end_layout
433
434 \begin_layout Standard
435 \SpecialCharNoPassThru LyX
436 でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
437 \family sans
438 コード組
439 \family default
440 環境に変更するか、あるいは、単に\SpecialCharNoPassThru TeX
441 コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
442 \end_layout
443
444 \begin_layout Standard
445 例えば
446 \family typewriter
447 width
448 \family default
449
450 \family typewriter
451 useFancyQuotes
452 \family default
453 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
454 。詳細については、Rに添付のSweave取扱説明書をお読みください。
455 \end_layout
456
457 \begin_layout Standard
458 \begin_inset ERT
459 status open
460
461 \begin_layout Plain Layout
462
463 <<setup, keep.source=TRUE>>=
464 \end_layout
465
466 \begin_layout Plain Layout
467
468 ## オプション「digits」は桁数(の概数)を設定できます
469 \end_layout
470
471 \begin_layout Plain Layout
472
473 options(width = 70, useFancyQuotes = FALSE, digits = 4)
474 \end_layout
475
476 \begin_layout Plain Layout
477
478 @
479 \end_layout
480
481 \begin_layout Plain Layout
482
483 <<sweave-manual, eval=FALSE, keep.source=TRUE>>=
484 \end_layout
485
486 \begin_layout Plain Layout
487
488 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
489 \end_layout
490
491 \begin_layout Plain Layout
492
493 vignette("Sweave", package = "utils")
494 \end_layout
495
496 \begin_layout Plain Layout
497
498 @
499 \end_layout
500
501 \end_inset
502
503
504 \end_layout
505
506 \begin_layout Standard
507 下記は、どのSエンジンでも動作する単純な例です。
508 \end_layout
509
510 \begin_layout Standard
511 \begin_inset ERT
512 status open
513
514 \begin_layout Plain Layout
515
516 <<print-integers, keep.source=TRUE>>=
517 \end_layout
518
519 \begin_layout Plain Layout
520
521 ## 1から10までの整数は
522 \end_layout
523
524 \begin_layout Plain Layout
525
526 1:10 
527 \end_layout
528
529 \begin_layout Plain Layout
530
531 @
532 \end_layout
533
534 \begin_layout Plain Layout
535
536 <<hide-results, results=hide>>=
537 \end_layout
538
539 \begin_layout Plain Layout
540
541 ## results=hide を設定して意図的に出力を隠す
542 \end_layout
543
544 \begin_layout Plain Layout
545
546 print(1:20)
547 \end_layout
548
549 \begin_layout Plain Layout
550
551 @
552 \end_layout
553
554 \end_inset
555
556
557 \end_layout
558
559 \begin_layout Standard
560 単純な計算機をエミュレートすることもできます。
561 \end_layout
562
563 \begin_layout Standard
564 \begin_inset ERT
565 status open
566
567 \begin_layout Plain Layout
568
569 <<calculator>>=
570 \end_layout
571
572 \begin_layout Plain Layout
573
574 1 + pi
575 \end_layout
576
577 \begin_layout Plain Layout
578
579 sin(pi/6)
580 \end_layout
581
582 \begin_layout Plain Layout
583
584 @
585 \end_layout
586
587 \end_inset
588
589
590 \end_layout
591
592 \begin_layout Standard
593 今度は、ガウシアンデータを見てみましょう。
594 \end_layout
595
596 \begin_layout Standard
597 \begin_inset ERT
598 status open
599
600 \begin_layout Plain Layout
601
602 <<rnorm>>=
603 \end_layout
604
605 \begin_layout Plain Layout
606
607 set.seed(123)  # 再現可能性のため
608 \end_layout
609
610 \begin_layout Plain Layout
611
612 x <- rnorm(20)
613 \end_layout
614
615 \begin_layout Plain Layout
616
617 print(x)
618 \end_layout
619
620 \begin_layout Plain Layout
621
622 t1 <- t.test(x)
623 \end_layout
624
625 \begin_layout Plain Layout
626
627 @
628 \end_layout
629
630 \end_inset
631
632
633 \end_layout
634
635 \begin_layout Standard
636 数値を標準テキストに簡単に統合させることができます。これは、
637 \family typewriter
638
639 \backslash
640 Sexpr{}
641 \family default
642 コマンドによって行われ、\SpecialCharNoPassThru LyX
643 中の対応するメニューは
644 \family sans
645 挿入\SpecialChar menuseparator
646 任意設定差込枠\SpecialChar menuseparator
647 S/R表現
648 \family default
649 ですが、\SpecialCharNoPassThru TeX
650 コードを使うこともできます。例えば、ベクトル
651 \family typewriter
652 x
653 \family default
654 の第3要素は、
655 \begin_inset Flex S/R expression
656 status collapsed
657
658 \begin_layout Plain Layout
659
660 x[3]
661 \end_layout
662
663 \end_inset
664
665  (すなわち
666 \family typewriter
667 x[3]
668 \family default
669 )であり、検定の
670 \begin_inset Formula $p$
671 \end_inset
672
673 値は
674 \begin_inset Flex S/R expression
675 status collapsed
676
677 \begin_layout Plain Layout
678
679 format.pval(t1$p.value)
680 \end_layout
681
682 \end_inset
683
684 です。これらの数値は、R中で
685 \emph on
686 round()
687 \emph default
688 のようなコマンドを使うことによって丸めることもできます。
689 \end_layout
690
691 \begin_layout Standard
692
693 \family roman
694 \series medium
695 \shape up
696 \size normal
697 \emph off
698 \bar no
699 \noun off
700 \color none
701 今度は、
702 \family typewriter
703 \series default
704 \shape default
705 \size default
706 \emph default
707 \bar default
708 \noun default
709 \color inherit
710 iris
711 \family roman
712 \series medium
713 \shape up
714 \size normal
715 \emph off
716 \bar no
717 \noun off
718 \color none
719 データセットの要約を見てみましょう。
720 \end_layout
721
722 \begin_layout Standard
723 \begin_inset ERT
724 status open
725
726 \begin_layout Plain Layout
727
728 <<iris-summary>>=
729 \end_layout
730
731 \begin_layout Plain Layout
732
733 summary(iris[,-5])
734 \end_layout
735
736 \begin_layout Plain Layout
737
738 @
739 \end_layout
740
741 \end_inset
742
743
744 \end_layout
745
746 \begin_layout Standard
747 \begin_inset Float table
748 wide false
749 sideways false
750 status open
751
752 \begin_layout Plain Layout
753 \begin_inset Caption Standard
754
755 \begin_layout Plain Layout
756
757 \family typewriter
758 iris
759 \family default
760 データの最初の4変数の分位数
761 \begin_inset CommandInset label
762 LatexCommand label
763 name "tab:xtable-demo"
764
765 \end_inset
766
767
768 \end_layout
769
770 \end_inset
771
772
773 \end_layout
774
775 \begin_layout Plain Layout
776 \align center
777 \begin_inset ERT
778 status open
779
780 \begin_layout Plain Layout
781
782 \end_layout
783
784 \begin_layout Plain Layout
785
786 <<xtable-demo,results=tex,echo=FALSE>>=
787 \end_layout
788
789 \begin_layout Plain Layout
790
791 if (require('xtable')) {
792 \end_layout
793
794 \begin_layout Plain Layout
795
796 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
797 \end_layout
798
799 \begin_layout Plain Layout
800
801 } else cat('the xtable package is not available! please install.packages("xtable"
802 )')
803 \end_layout
804
805 \begin_layout Plain Layout
806
807 @
808 \end_layout
809
810 \end_inset
811
812
813 \end_layout
814
815 \end_inset
816
817
818 \end_layout
819
820 \begin_layout Standard
821 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
822 \series bold
823 xtable
824 \series default
825 パッケージを使って綺麗にしてやるといいでしょう。表
826 \begin_inset CommandInset ref
827 LatexCommand ref
828 reference "tab:xtable-demo"
829
830 \end_inset
831
832 は、Sweaveでの
833 \series bold
834 xtable
835 \series default
836 パッケージの使い方を示すための例です。コード組のオプション
837 \family typewriter
838 results=tex
839 \family default
840 は、R出力が、特別な環境(
841 \family typewriter
842 Soutput
843 \family default
844 )で包まれるのではなく、生の\SpecialCharNoPassThru LaTeX
845 コードとして書き出されるように保証するためのものです。
846 \end_layout
847
848 \begin_layout Standard
849
850 \begin_inset CommandInset ref
851 LatexCommand ref
852 reference "fig:iris-pairs"
853
854 \end_inset
855
856 と図
857 \begin_inset CommandInset ref
858 LatexCommand ref
859 reference "fig:iris-boxplots"
860
861 \end_inset
862
863 は、Sweaveを使って画像を生成する簡単な例です。
864 \end_layout
865
866 \begin_layout Standard
867 \begin_inset Float figure
868 wide false
869 sideways false
870 status open
871
872 \begin_layout Plain Layout
873 \align center
874 \begin_inset Note Note
875 status open
876
877 \begin_layout Plain Layout
878 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
879 \end_layout
880
881 \end_inset
882
883
884 \begin_inset ERT
885 status open
886
887 \begin_layout Plain Layout
888
889 <<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
890 \end_layout
891
892 \begin_layout Plain Layout
893
894 pairs(iris, col = iris$Species)
895 \end_layout
896
897 \begin_layout Plain Layout
898
899 @
900 \end_layout
901
902 \end_inset
903
904
905 \end_layout
906
907 \begin_layout Plain Layout
908 \begin_inset Caption Standard
909
910 \begin_layout Plain Layout
911
912 \family typewriter
913 iris
914 \family default
915 データの散布図マトリックス
916 \begin_inset CommandInset label
917 LatexCommand label
918 name "fig:iris-pairs"
919
920 \end_inset
921
922
923 \end_layout
924
925 \end_inset
926
927
928 \end_layout
929
930 \end_inset
931
932
933 \end_layout
934
935 \begin_layout Standard
936 \begin_inset Float figure
937 wide false
938 sideways false
939 status open
940
941 \begin_layout Plain Layout
942 \align center
943 \begin_inset ERT
944 status open
945
946 \begin_layout Plain Layout
947
948 <<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
949 \end_layout
950
951 \begin_layout Plain Layout
952
953 par(mar=c(4,5,.1,.3), las=1)
954 \end_layout
955
956 \begin_layout Plain Layout
957
958 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
959 \end_layout
960
961 \begin_layout Plain Layout
962
963 @
964 \end_layout
965
966 \end_inset
967
968
969 \end_layout
970
971 \begin_layout Plain Layout
972 \begin_inset Caption Standard
973
974 \begin_layout Plain Layout
975 種でグループ化された萼片の長さのボックスプロット
976 \begin_inset CommandInset label
977 LatexCommand label
978 name "fig:iris-boxplots"
979
980 \end_inset
981
982
983 \end_layout
984
985 \end_inset
986
987
988 \end_layout
989
990 \end_inset
991
992
993 \end_layout
994
995 \begin_layout Standard
996 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
997 \family typewriter
998 R CMD Stangle
999 \family default
1000 を使って行われます。
1001 \end_layout
1002
1003 \begin_layout Section
1004
1005 \family sans
1006 Sweave
1007 \family default
1008 モジュール
1009 \end_layout
1010
1011 \begin_layout Standard
1012
1013 \family sans
1014 Sweave
1015 \family default
1016 モジュールは、\SpecialCharNoPassThru LyX
1017 文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialCharNoPassThru LyX
1018 は、そのような文書を取り扱う特定の変換子を使っ
1019 て処理します(取扱説明書カスタマイズ篇参照)。
1020 \family sans
1021 Sweave
1022 \family default
1023 モジュールは、
1024 \family sans
1025 sweave
1026 \family default
1027 変換子を使用しますが、これは、\SpecialCharNoPassThru LyX
1028
1029 \family sans
1030 scripts
1031 \family default
1032 ディレクトリ下にあるRスクリプト
1033 \family sans
1034 lyxsweave.R
1035 \family default
1036 が本体になっています。このスクリプトは、\SpecialCharNoPassThru LyX
1037 から
1038 \family sans
1039 Rnw
1040 \family default
1041 文書を受け取り、これを\SpecialCharNoPassThru TeX
1042 文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialCharNoPassThru LyX
1043 が面倒を見ます。
1044 \end_layout
1045
1046 \begin_layout Standard
1047
1048 \family sans
1049 sweave
1050 \family default
1051 形式から\SpecialCharNoPassThru LaTeX
1052 への変換子は、下記のコマンド行でRを呼び出します。
1053 \end_layout
1054
1055 \begin_layout Standard
1056 \begin_inset ERT
1057 status open
1058
1059 \begin_layout Plain Layout
1060
1061
1062 \backslash
1063 begin{verbatim}
1064 \end_layout
1065
1066 \begin_layout Plain Layout
1067
1068 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1069  $$r
1070 \end_layout
1071
1072 \begin_layout Plain Layout
1073
1074
1075 \backslash
1076 end{verbatim}
1077 \end_layout
1078
1079 \end_inset
1080
1081
1082 \end_layout
1083
1084 \begin_layout Standard
1085 \SpecialCharNoPassThru LyX
1086 ライブラリディレクトリ
1087 \family typewriter
1088 $$s
1089 \family default
1090 は、
1091 \family sans
1092 ヘルプ\SpecialChar menuseparator
1093 \SpecialCharNoPassThru LyX
1094 について
1095 \family default
1096 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialCharNoPassThru LyX
1097 取扱説明書カスタマイズ篇には、
1098 \family typewriter
1099 $$i
1100 \family default
1101
1102 \family typewriter
1103 $$o
1104 \family default
1105
1106 \family typewriter
1107 $$e
1108 \family default
1109
1110 \family typewriter
1111 $$r
1112 \family default
1113 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1114 があります。
1115 \end_layout
1116
1117 \begin_layout Enumerate
1118 \SpecialCharNoPassThru LyX
1119 文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1120 \family typewriter
1121 ISO-8859-15
1122 \family default
1123
1124 \family typewriter
1125 UTF-8
1126 \family default
1127 などです。エンコーディングは、Rが
1128 \family sans
1129 Rnw
1130 \family default
1131 文書を正しく読むのに使用されます。
1132 \end_layout
1133
1134 \begin_layout Enumerate
1135 Sweave文書内のRコード組は、\SpecialCharNoPassThru LyX
1136 文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1137 \family typewriter
1138 getwd()
1139 \family default
1140 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1141 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1142 \end_layout
1143
1144 \begin_layout Enumerate
1145 \SpecialCharNoPassThru LaTeX
1146
1147 \family sans
1148 Sweave.sty
1149 \family default
1150 を検出できないと、このRスクリプトが自動的に
1151 \family sans
1152 Sweave.sty
1153 \family default
1154 を一時ディレクトリにコピーし、そこで\SpecialCharNoPassThru LaTeX
1155 コンパイルを実行します。
1156 \end_layout
1157
1158 \begin_layout Enumerate
1159 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1160 \begin_inset CommandInset href
1161 LatexCommand href
1162 name "#7551"
1163 target "http://www.lyx.org/trac/ticket/7551"
1164
1165 \end_inset
1166
1167 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialCharNoPassThru LaTeX
1168 がそのファイルを
1169 \family typewriter
1170
1171 \backslash
1172 includegraphics{}
1173 \family default
1174 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1175 aveで直接的に解決することもができます。Sweaveオプションの
1176 \family typewriter
1177 prefix.string
1178 \family default
1179 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1180 \end_layout
1181
1182 \begin_layout Standard
1183 Sweaveパッケージには、事前に
1184 \family typewriter
1185 noae
1186 \family default
1187 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1188 \end_layout
1189
1190 \begin_layout Standard
1191 \begin_inset ERT
1192 status open
1193
1194 \begin_layout Plain Layout
1195
1196
1197 \backslash
1198 begin{verbatim}
1199 \end_layout
1200
1201 \begin_layout Plain Layout
1202
1203
1204 \backslash
1205 RequirePackage[T1]{fontenc}  
1206 \end_layout
1207
1208 \begin_layout Plain Layout
1209
1210
1211 \backslash
1212 RequirePackage{ae}
1213 \end_layout
1214
1215 \begin_layout Plain Layout
1216
1217
1218 \backslash
1219 end{verbatim}
1220 \end_layout
1221
1222 \end_inset
1223
1224
1225 \end_layout
1226
1227 \begin_layout Standard
1228 \SpecialCharNoPassThru LyX
1229 は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
1230 もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1231 \series bold
1232 ae
1233 \series default
1234 パッケージを手動で読み込ませることができます。
1235 \end_layout
1236
1237 \begin_layout Section
1238 問題の解決法
1239 \end_layout
1240
1241 \begin_layout Standard
1242 \SpecialCharNoPassThru LyX
1243  2.0以降、コンパイル中の詳細な情報を、
1244 \family sans
1245 表示\SpecialChar menuseparator
1246 メッセージを表示
1247 \family default
1248 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1249 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1250 \end_layout
1251
1252 \begin_layout Standard
1253 \begin_inset ERT
1254 status open
1255
1256 \begin_layout Plain Layout
1257
1258
1259 \backslash
1260 begin{verbatim}
1261 \end_layout
1262
1263 \begin_layout Plain Layout
1264
1265 17:58:47.868: Processing code chunks with options ...
1266 \end_layout
1267
1268 \begin_layout Plain Layout
1269
1270 17:58:47.885:  1 : echo keep.source term verbatim (label=setup)
1271 \end_layout
1272
1273 \begin_layout Plain Layout
1274
1275 17:58:47.889:  2 : echo keep.source (label=sweave-manual)
1276 \end_layout
1277
1278 \begin_layout Plain Layout
1279
1280 17:58:47.908:  3 : echo keep.source term verbatim (label=print-integers)
1281 \end_layout
1282
1283 \begin_layout Plain Layout
1284
1285 ....
1286 \end_layout
1287
1288 \begin_layout Plain Layout
1289
1290 17:58:47.941: Loading required package: xtable
1291 \end_layout
1292
1293 \begin_layout Plain Layout
1294
1295 17:58:47.976:  9 : echo term verbatim pdf (label=iris-pairs)
1296 \end_layout
1297
1298 \begin_layout Plain Layout
1299
1300 ....
1301 \end_layout
1302
1303 \begin_layout Plain Layout
1304
1305 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1306 \end_layout
1307
1308 \begin_layout Plain Layout
1309
1310
1311 \backslash
1312 end{verbatim}
1313 \end_layout
1314
1315 \end_inset
1316
1317
1318 \end_layout
1319
1320 \begin_layout Standard
1321
1322 \family typewriter
1323 label=
1324 \family default
1325 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1326 \end_layout
1327
1328 \begin_layout Standard
1329 もうひとつ知られている問題点は、\SpecialCharNoPassThru LyX
1330 中でコード組段落の配置に(
1331 \family sans
1332 段落設定
1333 \family default
1334 を使用して)手を加えた場合、\SpecialCharNoPassThru LyX
1335 は、改行しないでコード組の前に
1336 \family typewriter
1337
1338 \backslash
1339 centering{}
1340 \family default
1341 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1342 \end_layout
1343
1344 \begin_layout Standard
1345 \begin_inset ERT
1346 status open
1347
1348 \begin_layout Plain Layout
1349
1350
1351 \backslash
1352 begin{verbatim}
1353 \end_layout
1354
1355 \begin_layout Plain Layout
1356
1357
1358 \backslash
1359 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1360 \end_layout
1361
1362 \begin_layout Plain Layout
1363
1364
1365 \backslash
1366 end{verbatim}
1367 \end_layout
1368
1369 \end_inset
1370
1371
1372 \end_layout
1373
1374 \begin_layout Standard
1375
1376 \family typewriter
1377 <<>>=
1378 \family default
1379 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1380 \family sans
1381 表示\SpecialChar menuseparator
1382 ソースを表示
1383 \family default
1384 で、実際のソースコードを再確認し、
1385 \family typewriter
1386 <<>>=
1387 \family default
1388 が改行後に現れるようにすることをお勧めします。表
1389 \begin_inset CommandInset ref
1390 LatexCommand ref
1391 reference "tab:xtable-demo"
1392
1393 \end_inset
1394
1395 のコード組に手動で空行が追加されているのは、このためです。
1396 \end_layout
1397
1398 \begin_layout Section
1399 リソース
1400 \end_layout
1401
1402 \begin_layout Standard
1403 Sweaveのホームページは、
1404 \begin_inset Flex URL
1405 status collapsed
1406
1407 \begin_layout Plain Layout
1408
1409 http://www.stat.uni-muenchen.de/~leisch/Sweave/
1410 \end_layout
1411
1412 \end_inset
1413
1414 にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
1415 e関連パッケージの一覧があります。
1416 \begin_inset Flex URL
1417 status collapsed
1418
1419 \begin_layout Plain Layout
1420
1421 http://cran.r-project.org/web/views/ReproducibleResearch.html
1422 \end_layout
1423
1424 \end_inset
1425
1426 をご覧ください。\SpecialCharNoPassThru LyX
1427 とSweaveに関する質問は、\SpecialCharNoPassThru LyX
1428 メーリングリスト(
1429 \begin_inset Flex URL
1430 status collapsed
1431
1432 \begin_layout Plain Layout
1433
1434 http://www.lyx.org/MailingLists
1435 \end_layout
1436
1437 \end_inset
1438
1439 )に投稿してください。さらに多くの\SpecialCharNoPassThru LyX
1440 の用例は、
1441 \begin_inset Flex URL
1442 status collapsed
1443
1444 \begin_layout Plain Layout
1445
1446 https://github.com/yihui/lyx
1447 \end_layout
1448
1449 \end_inset
1450
1451 にあります。
1452 \end_layout
1453
1454 \begin_layout Section
1455 FAQ
1456 \end_layout
1457
1458 \begin_layout Subsection
1459 Sweaveをbeamerで使うにはどうすればよいでしょうか
1460 \end_layout
1461
1462 \begin_layout Standard
1463 beamerのスライドでSweaveを使うと、\SpecialCharNoPassThru LyX
1464 では\SpecialCharNoPassThru LaTeX
1465 エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決す
1466 るには、通常のフレームの代わりに脆弱フレームを使うか、フレーム表題に
1467 \family sans
1468 挿入\SpecialChar menuseparator
1469 フレームオプション
1470 \family default
1471 を使って、
1472 \family typewriter
1473 fragile
1474 \family default
1475 オプションを渡します。
1476 \end_layout
1477
1478 \begin_layout Subsection
1479 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1480 \end_layout
1481
1482 \begin_layout Standard
1483 もちろんです。まず、前述のRスクリプト
1484 \family typewriter
1485 $$s
1486 \family sans
1487 /scripts/lyxsweave.R
1488 \family default
1489 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1490
1491 \emph on
1492 Sweave()
1493 \emph default
1494 をどのように使っているかを見てください)。その後、カスタマイズした
1495 \family sans
1496 lyxsweave.R
1497 \family default
1498 をあなたの
1499 \emph on
1500 ユーザーディレクトリ
1501 \emph default
1502 (ヘルプ\SpecialChar menuseparator
1503 \SpecialCharNoPassThru LyX
1504 についてでチェックできます)の
1505 \family sans
1506 scripts
1507 \family default
1508 ディレクトリ下に置いてください。\SpecialCharNoPassThru LyX
1509 は自身の
1510 \emph on
1511 ライブラリディレクトリ
1512 \emph default
1513 を見に行く前に
1514 \emph on
1515 ユーザーディレクトリ
1516 \emph default
1517 をチェックしますので、Rスクリプト
1518 \family sans
1519 lyxsweave.R
1520 \family default
1521 がユーザーディレクトリで検出されれば、それが使用されます。\SpecialCharNoPassThru LyX
1522 ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialCharNoPassThru LyX
1523 更新時に修正したスクリプ
1524 トが上書きされてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1525 \end_layout
1526
1527 \begin_layout Standard
1528 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1529 \series bold
1530 knitr
1531 \series default
1532 パッケージもサポートされており、対応するモジュール名は
1533 \family sans
1534 Rnw (knitr)
1535 \family default
1536 となっています。
1537 \end_layout
1538
1539 \end_body
1540 \end_document