7

このようなラテックステーブル生成コードのサンプルがあります

df<-data.frame(name=rep(letters[1:7],each=24),salary=runif(24*7,100,200))
lst<-tapply(df$salary,df$name,matrix,nrow=4,byrow=T)
xlst<-lapply(lst,xtable)

今、すべてのテーブルのすべての行の後に \hdashline を自動的に導入し、R コードのテーブル間に\vspace{2em}を導入したいと思います。私が試したのはこれです

for(i in seq_along(lst)){
  addtorow[i] <- list(pos = list(seq_len(nrow(lst[[i]])-1)),
                      command = "\\hdashline \n")
}

forループで変更を加える必要があります..単一のテーブルを申請すると機能しますが、forループでは機能しません...どんな助けも大歓迎です...

4

2 に答える 2

11

ループを使用するのではなく、既存のprint.xtable機能を貼り付けと組み合わせて使用​​することを検討してください。

  1. hdashlines:パラメータ の使用を検討してprint.xtableください。たとえばhline.after、表の行間の水平線を制御するパラメーターがあります。

  2. vspace:これはおそらく を使用する方が簡単pasteです。

例えば:

library(xtable)
df <- data.frame(name=rep(letters[1:3],each=24),salary=runif(24*3,100,200))
lst <- tapply(df$salary,df$name,matrix,nrow=4,byrow=T)
xlst <- lapply(lst,function(x)print(xtable(x), hline.after=1:nrow(x)))
xlst <- lapply(xlst, paste, "\\vspace{2em}")
xlst

[1] "% xtable 1.5-6 パッケージによって R 2.13.1 で生成されたラテックス テーブル\n% Tue Aug 23 13:36:41 2011\n\begin{table}[ht]\n\begin{center}\n \begin{tabular}{rrrrrrr}\n & 1 & 2 & 3 & 4 & 5 & 6 \\ \n 1 & 158.66 & 115.81 & 106.70 & 128.78 & 157.43 & 191.01 \\ \n \hline\n2 & 159.09 & 172.31&153.93&127.91&106.93&147.95 \\ \ n \ hline \ n3&135.65&139.45&192.90&108.78&186.52&164.10 \\ n \ n \ hline \ n4&190.10&154.39&124.91&169.91 \ \n
\hline\n\end{tabular}\n\end{center}\n\end{table}\n \vspace{2em}"


詳細については、を参照?print.xtableしてください。hline.after目的に十分な柔軟性がない場合はadd.to.row、追加する位置と正確な要素タイプの両方を指定できる場所を確認してください。

于 2011-08-23T12:38:47.857 に答える