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