gpt4 book ai didi

从 R 包函数中检索并执行示例代码作为 R-markdown 中的代码块

转载 作者:行者123 更新时间:2023-12-04 09:08:31 25 4
gpt4 key购买 nike

我想从 R 中提取示例代码打包并在 rmarkdown 中运行自动归档。

我可以使用函数 utils::example 提取代码如下。

example("geom_histogram", package = "ggplot2", ask = F,
prompt.prefix = "", give.lines = TRUE)[-(1:5)]

我尝试使用 block 选项 results="asis"如下,但结果是作为代码输出而不是代码块给出的。
```{r,echo = FALSE, results="asis"}
cat("```{r}")
library(ggplot2)
cat(paste(example("geom_histogram", package = "ggplot2", ask = F,
prompt.prefix = "", give.lines = TRUE)[-(1:5)], collapse = "\n"))
cat("```")
```

我想将代码作为代码块,输出与 http://ggplot2.tidyverse.org/reference/geom_histogram.html 中的相同.如何做到这一点?

最佳答案

更新答案:

您可以创建一个函数来提取代码并将其用作 code block 选项中的参数。

# Function saved in functions.R file
getCode <- function(myFunction, myPackage) {
example(myFunction, myPackage, ask = FALSE, character.only = TRUE,
prompt.prefix = "", give.lines = TRUE)[-(1:5)]
}

您的 Rmd ( myFile.Rmd ) 应如下所示:

```{r, meta, include = FALSE}
myPackage <- "ggplot2"
myFunction <- "geom_histogram"
source("functions.R")
```

```{r, intro, echo = FALSE, results = "asis"}
cat("#", myPackage, "\n")
cat("##", myFunction, "\n")
library(myPackage, character.only = TRUE)
```

```{r, runCode, code = getCode(myFunction, myPackage)}
```


针织 Rmd与: knitr::knit2html("myFile.Rmd")对于这样的结果:

enter image description here

上一个答案:

将提取的代码写入一个虚拟文件( foo.R )并将其用作 code block 选项中的参数。

示例文件( myFile.Rmd):
  • 第一个 block :加载测试库
  • 第二 block :提取示例并将其保存到文件
  • 第三 block :运行提取的代码

  • ```{r, meta, include = FALSE}
    library(ggplot2)
    ```

    ```{r, getCode, include = FALSE}
    code <- example("geom_histogram", package = "ggplot2", ask = FALSE,
    prompt.prefix = "", give.lines = TRUE)[-(1:5)]
    write.table(code, "foo.R", quote = FALSE, row.names = FALSE, col.names = FALSE)
    ```

    ```{r, runCode, code = readLines("foo.R")}
    ```


    使用 knitr::knit2html("myFile.Rmd") 编织文件对于这样的结果:

    enter image description here

    我们还可以删除硬编码的变量以获得更灵活的输出:

    ```{r, meta, include = FALSE}
    myPackage <- "ggplot2"
    myFunction <- "geom_histogram"
    library(myPackage, character.only = TRUE)
    ```

    ```{r, getCode, include = FALSE}
    code <- example(myFunction, myPackage, ask = FALSE, character.only = TRUE,
    prompt.prefix = "", give.lines = TRUE)[-(1:5)]
    write.table(code, "foo.R", quote = FALSE, row.names = FALSE, col.names = FALSE)
    ```

    ```{r, intro, echo = FALSE, results = "asis"}
    cat("#", myPackage, "\n")
    cat("##", myFunction, "\n")
    ```

    ```{r, runCode, code = readLines("foo.R")}
    ```

    关于从 R 包函数中检索并执行示例代码作为 R-markdown 中的代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383643/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com