使用各种对象将一堆语法(多行)复制到20次

时间:2014-11-18 08:04:48

标签: r loops lapply

我想为报告创建一个降价文档。我有二十个对象(命名为字母)。对象是各种汇总表,给定字母作为名称。 所有对象都需要以块(在Rstudio markdown中)进行生成表。我用knitr来创建报告。

list<- dput(unlist(letters[1:20]))

上面的命令生成了需要进入块的所有表。 对象名称保存在列表中。

现在我需要创建一个markdown文档,它需要包含块

'```{r summary_table, results='asis'} kable(a, digits=1, align='r' ) ```'

'```{r summary_table, results='asis'} kable(b, digits=1, align='r' ) ```'

..顺其自然..

'```{r summary_table, results='markdown'} kable(t, digits=1, align='r' ) ```'

如何通过几个步骤生成此语法?一点点想法会帮助我走。

我可以通过控制台中的get(&#34; a&#34;)看到该表。 lapply(list, function(x) get(x))为我提供包含所有表格的列表。 我想我需要按照这条路去做。但不知道如何插入每个字母 代码块的中间部分。

提前谢谢。

a<-"\n\n```{r summary_table, results='asis'} knitr::kable(a, digits=1, align='r' ) ```\n\n"

cat(rep(a, each=20))让我来到某个地方。任何想法我如何能够回应那个&#39; a&#39;列表中的字符?

2 个答案:

答案 0 :(得分:1)

这样的事情:

#dummy list
mylist <-
  list(a=data.frame(x=runif(10)),
       b=data.frame(x=runif(10)),
       c=data.frame(x=runif(10)))

#make temporary Rmd file
write.table(
  paste0(
    "```{r summary_table",names(mylist),", results='asis'}
kable(mylist['",names(mylist),"'], digits=1, align='r' )
```"),
  "temp.Rmd",row.names=FALSE,col.names=FALSE,quote=FALSE)

输出 - temp.Rmd

```{r summary_tablea, results='asis'}
kable(mylist['a'], digits=1, align='r' )
```
```{r summary_tableb, results='asis'}
kable(mylist['b'], digits=1, align='r' )
```
```{r summary_tablec, results='asis'}
kable(mylist['c'], digits=1, align='r' )
```

答案 1 :(得分:0)

@ zx8754,它有效:)你的更容易&amp;直截了当。我没有想到paste

我试图沿着这条线走。

a<-"\n\n```{r summary_table, results='asis'} knitr::kable(a, digits=1, align='r' ) ```\n\n"

cat(rep(a, each=20))

这两个可以进入一个函数,我可能能够指定我需要多少块的复制。如何用该语法替换对象名称(现在a处于何处)?在其他一些场景中它会有所帮助。谢谢!