使用 R xtable 在 Latex 表中的行之间添加水平线

发布于 2024-12-01 11:26:54 字数 523 浏览 2 评论 0原文

我有一个像这样的示例乳胶表生成代码

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 循环中工作时,它可以工作...非常感谢任何帮助...

I have a sample latex table generation code like this

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)

Now I want to introduce \hdashline automatically after every row in every table and also a \vspace{2em} in between the tables from R code
Wat I have tried is this

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

wat changes do i need to make in for loop..It works when I apply for a single table but not working in a for loop...Any help is much appreciated...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

想你的星星会说话 2024-12-08 11:26:54

不要使用循环,而是考虑将现有的 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%
8 月 23 日星期二 13:36:41
2011\n\开始{表格}[ht]\n\开始{中心}\n\开始{表格}{rrrrrrrr}\n
& 1 & 2& 3& 4& 5& 6 \\ \n 1 & 158.66& 115.81& 106.70 & 106.70 128.78
& 157.43& 191.01 \\ \n \hline\n2 & 159.09& 172.31& 153.93&
127.91 & 127.91 106.93& 147.95 \\ \n \hline\n3 & 135.65 & 135.65 139.45&
192.90 & 192.90 108.78& 186.52& 164.10 \\ \n \hline\n4 & 190.10&
154.39& 124.91& 199.24& 161.99& 167.61 \\ \n
\hline\n\end{表格}\n\end{中心}\n\end{表格}\n \vspace{2em}"


有关详细信息,请参阅 ?print.xtable。如果 hline.after 对于您的目的来说不够灵活,然后看看 add.to.row ,您可以在其中指定要添加的位置和确切的元素类型。

Rather than using a loop, consider using the existing print.xtable functionality combined with paste.

  1. hdashlines: Consider using the print.xtable parameters. For example, there is a parameter hline.after that controls horizontal lines between the table lines.

  2. vspace: This is possibly simpler using paste.

For example:

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] "% latex table generated in R 2.13.1 by xtable 1.5-6 package\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 \hline\n4 & 190.10 &
154.39 & 124.91 & 199.24 & 161.99 & 167.61 \\ \n
\hline\n\end{tabular}\n\end{center}\n\end{table}\n \vspace{2em}"


See ?print.xtable for more details. If hline.after is not flexible enough for your purposes, then have a look at add.to.row where you can specify both the position and exact element type to add.

滿滿的愛 2024-12-08 11:26:54

如果您使用 print.xtable,请在 print.xtable 中尝试以下操作:

hline.after = rep(c(1:nrow(df)),2 )# 在 xtable 中重复水平线

If you are using print.xtable, try the following inside print.xtable:

hline.after = rep(c(1:nrow(df)),2)# repeating horizontal lines in xtable

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文