【发布时间】:2015-09-27 19:43:30
【问题描述】:
是否可以将 Markdown 文档中的数据框列表呈现为单独的表格?
示例
给定代码块
```{r listOfDf}
library(knitr)
df <- data.frame(a=rnorm(10),b=rnorm(10),c=c(rep("a",5), rep("b",5)))
l_df <- split(df, df$c)
kable(l_df)
```
这个输出
但我想要更接近 R 控制台中给出的内容:
> l_df
$a
a b c
1 1.2869909 -0.3117932 a
2 1.4621792 1.2826924 a
3 -0.4274641 0.3335532 a
4 0.7882973 -1.1966702 a
5 -1.2086910 0.1549691 a
$b
a b c
6 -0.9460508 1.4679430 b
7 0.6580554 0.5806850 b
8 -0.7103335 2.6036176 b
9 -2.0110167 2.0488055 b
10 0.7691045 0.3652907 b
但这也呈现为一个表格(因此使用kable())
我试过循环*
for(i in 1:length(l_df)){
kable(l_df[i])
}
但这也不起作用(*但它确实适用于图表)
【问题讨论】:
-
只是不使用 kable?
-
@rawr 我还希望将输出呈现为表格,而不仅仅是数据的打印,因此
kable -
哦,那我会改变我的评论,使用 kable 像
print(kable(l_df[[i]])) -
似乎 kable 正在打印行名(pander 的答案在下面做同样的事情)当行名是 not 1:n 时,这对我来说看起来很奇怪。您可以使用
print(kable(`rownames<-`(l_df[[i]], NULL)))在您的 kable 选项中修复该问题,或者您可以先执行此操作l_df <- lapply(l_df, function(x) `rownames<-`(x, NULL)),这将适用于 kable 或 pander 选项 -
@rawr 最后我选择了
print(kable(l_df[[i]]))选项;谢谢你的建议。如果你想让它成为一个答案,我会给它一个“勾号”
标签: r r-markdown