在Rstudio中的RMarkdown中循环生成pander表

时间:2015-07-18 13:01:06

标签: r for-loop rstudio knitr pander

我使用类似下面代码段的代码创建了一组表格:

```{r tables, echo=TRUE, eval=TRUE}
require(reshape2); require(pander)
data("mtcars")
data("AirPassengers")

dta_lst <- list(mtcars, AirPassengers)
for (i in 1:length(dta_lst)) {
    pander(melt(head(dta_lst[[i]], n = 2), varnames = c("Something"), 
            value.name = "Something else"), 
           caption = paste("Some table for: ", class(dta_lst[[i]])))
}
```

当我运行代码时,它会生成所需的输出(当然,提供的示例没有多大意义,在我的正确数据中,我以合理的方式融合数据):

---------------------------
 variable   Something else 
---------- ----------------
   mpg            21       

   mpg            21       

   cyl            6        

   cyl            6        

   disp          160       

   disp          160       

    hp           110       

    hp           110       

   drat          3.9       

   drat          3.9       

    wt           2.62      

    wt          2.875      

   qsec         16.46      

   qsec         17.02      

    vs            0        

    vs            0        

    am            1        

    am            1        

   gear           4        

   gear           4        

   carb           4        

   carb           4        
---------------------------

Table: Some table for:  data.frame


----------------
 Something else 
----------------
      112       

      118       
----------------

Table: Some table for:  ts

当我尝试在Rstudio中编写代码时,不会出现平移表:

absent tables

当然,没有循环,pander命令就可以正常工作,并生成整齐地编织成HTML文档的表。

1 个答案:

答案 0 :(得分:1)

在for循环中,除非使用nil函数,否则没有“输出屏幕”。

print(x)不会显示任何内容

for (i in 1:4) { i }显示数字1 2 3和4

解决方案:在FOR循环中构造表(使用knitt)并将其分配给变量。然后使用for (i in 1:4) {print(i)}函数打印出此变量。记得。您必须在var表之前和之前添加空行:在print()

中使用粘贴功能