首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以编程方式创建标头并在标记中计算以下代码块

以编程方式创建标头并在标记中计算以下代码块
EN

Stack Overflow用户
提问于 2018-09-19 22:05:26
回答 2查看 525关注 0票数 2

我的问题类似于这个SO question,但我不想创建一个绘图,而是要计算代码块。我想知道是否有可能以编程方式生成标题,根据各自的标题评估代码块?下面是我的尝试。

我有一个数据帧的list,我想要为每个list元素创建一个头并计算代码块。下面的示例就是使用nrow()计算每个数据帧的行数。

代码语言:javascript
运行
复制
```{r data}

数据(“虹膜”、“空气质量”、“汽车”)

my_list <-列表(虹膜,空气质量,地铁)

名称(My_list) <- c(“虹膜”、“空气质量”、“汽车”)

代码语言:javascript
运行
复制

代码语言:javascript
运行
复制
```{r headers, results = 'asis'}

for (i in seq_along(my_list)) {

cat('#',name(My_list)I,'\n')

cat(‘’{r}‘,'\n')

cat('nrow(mylist[i])') #评估这里的任何其他代码

禁止酷刑委员会(“\n”)

cat(“”)

禁止酷刑委员会(“\n”)

}

代码语言:javascript
运行
复制

任何洞察力都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2018-09-20 01:19:20

这种行为是因为R无法在由所有mylist调用创建的新环境中找到您的cat对象。而且,由于mylist[[i]]是一个表达式,我们必须解析和计算它,才能得到最终的结果。

例如-

代码语言:javascript
运行
复制
```{r headers, results = 'asis'}

for (i in seq_along(my_list)) {

cat('#',name(My_list)I,'\n')

cat(‘’{r}‘,'\n')

cat(eval(解析(text=‘i’)

禁止酷刑委员会(“\n”)

cat(“”)

禁止酷刑委员会(“\n”)

}

代码语言:javascript
运行
复制

以上代码将给出如下结果(这是我们需要的结果)-

代码语言:javascript
运行
复制
# iris 
```{r} 

1

代码语言:javascript
运行
复制
# airquality 
```{r} 

2

代码语言:javascript
运行
复制
# mtcars 
```{r} 

3.

代码语言:javascript
运行
复制

但是要用mylist实现这一点,我们需要确保mylist对象在新环境中,然后才能进行评估。此外,请注意,人们不鼓励使用parse(),因为它可能导致这样的行为。这里有更多信息- Assigning and removing objects in a loop: eval(parse(paste(

这个答案将适用于你的例子,但请考虑我刚才提到的内容以及在上述问题中的讨论-

代码语言:javascript
运行
复制
```{r data}

数据(“虹膜”、“空气质量”、“汽车”)

my_list <-列表(虹膜,空气质量,地铁)

名称(My_list) <- c(“虹膜”、“空气质量”、“汽车”)

代码语言:javascript
运行
复制
```{r headers, results = 'asis'}

for (i in seq_along(my_list)) {

cat('#',name(My_list)I,'\n')

cat(‘’{r}‘,'\n')

以某种方式在这里获取数据或任何其他对象

这适用于简单的示例,在实际代码块上使用之前请小心。

cat(解析(文本=粘贴(nrow(my_list[i])

禁止酷刑委员会(“\n”)

cat(“”)

禁止酷刑委员会(“\n”)

}

代码语言:javascript
运行
复制
# iris 
```{r} 

150

代码语言:javascript
运行
复制
# airquality 
```{r} 

153

代码语言:javascript
运行
复制
# mtcars 
```{r} 

32

代码语言:javascript
运行
复制
票数 2
EN

Stack Overflow用户

发布于 2018-09-20 03:51:05

这是我解决类似问题的一种方法。我在这里得到了提示,但找不到答案.

两份文件:一名家长,一名子女。将子文档看作可以多次调用的子例程,并将其输出保存(并连接到character向量out)。当我在这个循环中完成时,我使用内联`r code`块。

主要文件,“家长”,我猜:

代码语言:javascript
运行
复制
---
output: md_document
---

```{r data}

数据(“虹膜”、“空气质量”、“汽车”)

my_list <-列表(虹膜,空气质量,地铁)

名称(My_list) <- c(“虹膜”、“空气质量”、“汽车”)

代码语言:javascript
运行
复制
```{r headers, echo = FALSE, include = FALSE, results = 'asis'}

输出<- NULL

for (i in seq_along(my_list)) {

out <- c(out,knitr::knit_child(“out.out”))

}

代码语言:javascript
运行
复制
`r paste(out, collapse="\n")`

子文档,与上面称为somedoc-child.Rmd的目录相同,由父文档调用。它对环境的看法与父环境完全相同,因此my_listi是完美的。

代码语言:javascript
运行
复制
# `r names(my_list[i])`

```{r, results="asis"}

nrow(my_list[i])

代码语言:javascript
运行
复制

当我编织下来的时候,我得到:

代码语言:javascript
运行
复制
    data("iris","airquality","mtcars")
    my_list <- list(iris,airquality,mtcars)
    names(my_list) <- c("iris","airquality","mtcars")

iris
====

    nrow(my_list[[i]])

\[1\] 150

airquality
==========

    nrow(my_list[[i]])

\[1\] 153

mtcars
======

    nrow(my_list[[i]])

\[1\] 32
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52414809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档