裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Sweave-7

2011年10月12日 | RとLaTeX

<<>>= の中に書けるもの

engine  文字列(R)  engine=R か engine=S のコードチャンクのみ処理される。
echo
  論理値(TRUE)  R/S コードを出力ファイルに含めるかどうか。
keep.source
  論理値(FALSE)  R/S コードがエコーされるとき,TRUE ならば書いたままのコードがコピーされ,FALSE ならば deparse されたコード(演算子の前後などに適切に空白を入れたコード)がエコーされる。
eval
  論理値(TRUE)  コードチャンクを評価するかどうか。評価しないと言うことは結果も図も作成されないと言うこと。
results
  文字列(verbatim)  verbatim なら R/S 関数の出力は \verbatim 環境に似た環境の下に出力される。tex なら LaTeX の文法に従うものとしてそのまま取り込まれる。hide なら実行はされるがすべての出力は抑制される。
print
  論理値(FALSE)  TRUE の場合はすべての式は print 関数でラップされてから評価される。このようにすれば,全ての式の結果は見えるようになるからだ。
term
  論理値(TRUE)  TRUE の場合は,値の見え方が通常の対話 R セッションと同じになる。すなわち,代入の結果は表示されず,オブジェクト名の場合は値が表示される。false の場合には明示的に print 関数や cat 関数を使わない限り表示されない。
split
  論理値(FALSE)  TRUE の場合は,それぞれのコードチャンクのテキスト出力は別々のファイルに書き込まれる。
strip.white  論理値(FALSE)  TRUE の場合は出力の前と後の空白行が取り除かれる。all の場合は,全ての空白行が取り除かれる。
prefix
  論理値(TRUE)  生成される画像とテキスト出力のファイル名が共通になる。
prefix.string
  文字列  ファイル名のデフォルトは '*.(Rnw|Snw)' の拡張子を除いた部分。
include
  論理値(TRUE)  テキスト出力の \input,グラフ出力の \includegraphics を自動生成するかどうか。別の場所に自分で挿入したいような場合には include=FALSE とする。
fig
  論理値(FALSE)  コードチャンクがグラフ出力をするかどうか。
eps
  論理値(FALSE)  eps 形式のグラフィックファイルを出力するかどうか。
pdf
  論理値(TRUE)  pdf 形式のグラフィックファイルを出力するかどうか。
pdf.version  pdf のバージョンをセットする。デフォルトは pdf.options() で取られる。
pdf.encoding
  pdf のエンコーディングをセットする。デフォルトは pdf.options() で取られる。
png  論理値(FALSE)  png 形式のグラフィックファイルを出力するかどうか。R ≧ 2.13.0 で有効。
jpeg  論理値(FALSE)  jpeg 形式のグラフィックファイルを出力するかどうか。R ≧ 2.13.0 で有効。
grdevice  (NULL)  R ≧ 2.13.0 で有効。
width  数値(6)  図の横幅(インチ単位)
height  数値(6)  図の高さ(インチ単位)
resolution  数値(300)  インチあたりのピクセル数(png, jpeg でのみ)  
concordance  論理値(FALSE)
figs.only  論理値(TRUE)  

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-6

2011年10月03日 | RとLaTeX

Sweave-2 に書いたラッパーの最後で,platex と dvipdfmx を起動してやれば,最終の pdf ファイルができるはず。
拡張子を .Rnw にも対応させることも含め,現在のラッパーは以下の如し。

ms <- function(file, encoding="euc-jp", encoding2="euc")
{
    Sweave(file, encoding=encoding)
    file <- sub(".(R|S)nw", ".tex", file)
    con <- file(file, open="r", encoding="euc-jp")
    x <- readLines(con)
    close(con)
    bb <- sum(grepl("mediabb", x))
    con <- file(file, open="w", encoding="euc-jp")
    sapply(x, function(y) {
        if (bb == 0 && grepl("begin{document}", y, fixed=TRUE)) {
            cat("\\usepackage{mediabb}\n", file=con, append=TRUE)
        }
        if (grepl("includegraphics", y)) {
            y <- sub("}", ".pdf}\n", y)
        }
        cat(sprintf("%s\n", y), file=con, append=TRUE)
    })
    close(con)
    system(sprintf("/Applications/UpTeX.app/teTeX/bin/platex -kanji=%s %s", encoding2, file))
    system(sprintf("/Applications/UpTeX.app/teTeX/bin/dvipdfmx %s", sub(".tex", ".dvi", file)))
}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-5

2011年10月02日 | RとLaTeX

表は以下のようにする。

<<>>=
library(xtable)
@

<<>>=
d <- data.frame(i=1:5, x=rnorm(5), s=month.name[1:5])
print(xtable(d, caption="foo bar baz", label="tab1", digits=c(0, 0, 5, 0)), table.placement="htbp", caption.placement="top", include.rownames=FALSE)
@

フロートになる。

\begin{table}[htbp]
\begin{center}
\caption{foo bar baz}
\label{tab1}
\begin{tabular}{rrl}
  \hline
i & x & s \\
  \hline
 1 & 2.14673 & January \\
  2 & 1.41907 & February \\
  3 & 0.21646 & March \\
  4 & 1.60816 & April \\
  5 & 2.30823 & May \\
   \hline
\end{tabular}
\end{center}
\end{table}

print メソッド(print.table)を使用すれば,xtable をそのまま使ったのでは制御できないオプション指定ができる。

<<>>=
library(xtable)
@

<<>>=
ans <- lm(Sepal.Width ~ Sepal.Length + Petal.Width + Petal.Length, data=iris)
@
<<>>=
xtable(ans, caption="重回帰分析の結果", label="lab1")
@

<<>>=
print(xtable(ans, caption="重回帰分析の結果2", label="lab2"), table.placement="htbp", caption.placement="top")
@

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-4

2011年10月01日 | RとLaTeX

\usepackage{ctable} があると,\includegraphics{foo} の拡張子が補われない件は,ctable.sty の28行目にある

\RequirePackage{color,keyval,array,tabularx,booktabs,rotating}

の color に問題があるようだ。color を省くと問題なくタイプセットができる。もう少し,原因を絞ろう。

\RequirePackage{keyval,array,tabularx,booktabs,rotating}

=======

どうも,color.sty というのは,

    \RequirePackage{color}

    と書いておけば色に関するコマンドが使えます.

    ただし, dvi ウエアによってはオプションをつけて

    \RequirePackage[dvips]{color}\RequirePackage[dviout]{color} 等と

    する必要があります.

という記述があることころを見ると,dvipdfmとは相容れないのかなあと思います。

まあ,色を使う必要はないので,どうしても ctable を使わなければならないときには,上記の行から color を省いた color2.sty でも使いますかね?

もっとも,Sweave-2 に書いたラッパーを使えばよいわけだけど。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-3

2011年09月30日 | RとLaTeX

図をフロートにするのは以下のようにする。

<<foo, include=false>>=
図を描く
@

\begin{figure}
    \begin{center}
<<fig=true, echo=false>>=
<<foo>>
@
    \end{center}
    \caption{bar baz}
    \label{boo}
\end{figure}

当然のことだが,図を描くコードを示す必要がないなら以下でよい。

\begin{figure}
    \begin{center}
<<fig=true, echo=false>>=
図を描く
@
    \end{center}
    \caption{bar baz}
    \label{boo}
\end{figure}

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-2

2011年09月29日 | RとLaTeX

ラッパー関数を作った

2011/910/13 版
texi2pdf にならい,Rerun to get ... が出なくなるまで複数回タイプセットを繰り返すようにした

ms <- function(file, encoding="euc-jp")
{
    read.lines <- function(file, encoding)
    {
        con <- file(file, open="r", encoding=encoding)
        x <- readLines(con)
        close(con)
        return(x)       
    }
    Sweave(file, encoding=encoding)
    file <- sub(".(R|S)nw", ".tex", file)
    x <- read.lines(file, encoding=encoding)
    bb <- sum(grepl("mediabb", x))
    con <- file(file, open="w", encoding=encoding)
    sapply(x, function(y) {
        if (bb == 0 && grepl("begin{document}", y, fixed=TRUE)) {
            cat("\\usepackage{mediabb}\n", file=con, append=TRUE)
        }
        if (grepl("includegraphics", y) && !grepl("(.jpg|.JPG|.png|.PNG)", y)) {
            y <- sub("}", ".pdf}\n", y)
        }
        cat(sprintf("%s\n", y), file=con, append=TRUE)
    })
    close(con)
    repeat {
        system(sprintf("/Applications/UpTeX.app/teTeX/bin/platex -kanji=euc %s", file))
        log <- read.lines(sub(".tex", ".log", file), encoding)
        if (sum(grepl("Rerun to get", log)) == 0) break
    }
    system(sprintf("/Applications/UpTeX.app/teTeX/bin/dvipdfmx %s", sub(".tex", ".dvi", file)))
}

旧版

ms <- function(file, encoding="euc-jp")
{
    Sweave(file, encoding=encoding)
    file <- sub(".(R|S)nw", ".tex", file)
    con <- file(file, open="r", encoding="euc-jp")
    x <- readLines(con)
    close(con)
    bb <- sum(grepl("mediabb", x))
    con <- file(file, open="w", encoding="euc-jp")
    sapply(x, function(y) {
        if (bb == 0 && grepl("begin{document}", y, fixed=TRUE)) {
            cat("\\usepackage{mediabb}\n", file=con, append=TRUE)
        }
        if (grepl("includegraphics", y)) {
            y <- sub("}", ".pdf}\n", y)
        }
        cat(sprintf("%s\n", y), file=con, append=TRUE)
    })
    close(con)
}
ms("sweave.Snw")

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave

2011年09月29日 | RとLaTeX

1. Sweave で作成される tex 内で,\includegraphics{ } で指定される画像ファイルの指定には,拡張子がつかない。
\usepackage[dvipdfm]{graphicx} を使うと,自動的に .pdf が補われるということだけど,補われない。

\usepackage{ctable} があるとこのようになるようだ。

2. バウンディング・ボックスを ebb で用意しなくても,\usepackage{mediabb} を使えばよい。

3. コメントを残すためには,\SweaveOpts{keep.source=TRUE} を使う。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村