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