R Markdown将函数嵌入到简单表中

R Markdown将函数嵌入到简单表中,r,function,report,markdown,R,Function,Report,Markdown,我是R新手,我非常喜欢R降价创建报告的灵活性 我的问题是,我想使用一个随机数生成函数,我已经创建了我的表。我希望简单表包含字符串标题和以下函数: > ran<-function(x){ + x<-runif(n=1, min=13.5,max=15.5) + round(x, digits=2)}. 我的最终目标是用简单的统计数据创建练习工作表,这些统计数据不同,但在一个有限的整数范围内-这样我就可以问一些关于平均值、中值等的后续问题 任何帮助都将不胜感激。也

我是R新手,我非常喜欢R降价创建报告的灵活性

我的问题是,我想使用一个随机数生成函数,我已经创建了我的表。我希望简单表包含字符串标题和以下函数:

> ran<-function(x){
+     x<-runif(n=1, min=13.5,max=15.5)
+     round(x, digits=2)}.
我的最终目标是用简单的统计数据创建练习工作表,这些统计数据不同,但在一个有限的整数范围内-这样我就可以问一些关于平均值、中值等的后续问题


任何帮助都将不胜感激。

也许您应该阅读如何构建有效的R代码以及如何编写Rmd文件,因为您的函数不起作用,并且R降价文档中有一些地方说明了如何做到这一点:

---
output: html_document
---

```{r echo=FALSE}
ran <- function(x) { 
  runif(n=1, min=13.5, max=15.5) + round(x, digits=2)
}
```

One        |Two          |Three
-----------|-------------|-----------
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
---
输出:html\u文档
---
```{r echo=FALSE}

ran也许您应该阅读如何构建有效的R代码以及如何编写Rmd文件,因为您的函数不起作用,并且R降价文档中有几个地方说明了如何做到这一点:

---
output: html_document
---

```{r echo=FALSE}
ran <- function(x) { 
  runif(n=1, min=13.5, max=15.5) + round(x, digits=2)
}
```

One        |Two          |Three
-----------|-------------|-----------
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
`r ran(2)` | `r ran(3)`  | `r ran(4)`
---
输出:html\u文档
---
```{r echo=FALSE}

ran这是一种自动化大部分报告生成并减少需要键入的代码量的方法。对于初学者,您可以将其转换为,这样可以更轻松地使用不同的
x
值创建工作表。下面是一个例子:

在rmarkdown文档中,您将在yaml标题中声明参数
x
n
n
是要为
x
的每个值生成的随机值的数目。如果呈现报告时未输入其他值,则yaml标题中的
x
n
值只是knitr使用的默认值:

---
output: html_document
params: 
  x: !r c(1,5,10)
  n: 10
---
然后,在同一个rmarkdown文档中,您将拥有工作表的文本和代码。分别使用
params$x
params$n
访问参数
x
n

例如,rmarkdown文档的其余部分可能类似于下面的代码。我们将
x
放入一个名为
x_vals
的列表中,该列表包含命名元素,因此输出中得到的列名将是列表元素的名称。我们将该列表馈送到
sapply
,为
x
的每个值获得一列
n
随机值。整个
sapply
语句被包装在
kable
中,它以rmarkdown格式生成一个表

```{r, include=FALSE}
library(knitr)
```

```{r, echo=FALSE}
# Create a named list of the x values that we passed into this document
x_vals = as.list(setNames(params$x, paste0("x=", params$x)))

kable(sapply(x_vals, function(i) round(runif(params$n, 13.5, 15.5) + i, 2)))
```
现在可以单击“knit”按钮,它将使用默认参数值生成一个表:

如果您想为
x
和/或
n
使用不同的值,请打开一个单独的R脚本文件并键入以下内容:

rmarkdown::render("Worksheet.Rmd", 
                  params = list(x = c(2,4,6,8), 
                                n = 5),
                  output_file="Worksheet.html")
在上面的代码中,
render
函数使用新的
x
n
值编译我们刚刚创建的rmarkdown文档,并将输出保存到名为
Worksheet.html
的文件中。(我假设我们已将rmarkdown文档保存到名为
Worksheet.Rmd
的文件中)以下是输出结果:

当然,您也可以为
runif
函数的下限和上限添加参数,而不是将它们硬编码为13.5和15.5

如果要创建多个工作表,每个工作表具有不同的
x
值,可以将
render
放入循环中:

df = expand.grid(1:3,5:6,10:11)

for (i in 1:nrow(df)) {
  rmarkdown::render("Worksheet.Rmd", 
                    params = list(x=unlist(df[i,]), n=10),
                    output_file=paste0(paste(unlist(df[i,]),collapse="_"),".html"))
}

这是一种自动化大部分报告生成并减少需要键入的代码量的方法。对于初学者,您可以将其转换为,这样可以更轻松地使用不同的
x
值创建工作表。下面是一个例子:

在rmarkdown文档中,您将在yaml标题中声明参数
x
n
n
是要为
x
的每个值生成的随机值的数目。如果呈现报告时未输入其他值,则yaml标题中的
x
n
值只是knitr使用的默认值:

---
output: html_document
params: 
  x: !r c(1,5,10)
  n: 10
---
然后,在同一个rmarkdown文档中,您将拥有工作表的文本和代码。分别使用
params$x
params$n
访问参数
x
n

例如,rmarkdown文档的其余部分可能类似于下面的代码。我们将
x
放入一个名为
x_vals
的列表中,该列表包含命名元素,因此输出中得到的列名将是列表元素的名称。我们将该列表馈送到
sapply
,为
x
的每个值获得一列
n
随机值。整个
sapply
语句被包装在
kable
中,它以rmarkdown格式生成一个表

```{r, include=FALSE}
library(knitr)
```

```{r, echo=FALSE}
# Create a named list of the x values that we passed into this document
x_vals = as.list(setNames(params$x, paste0("x=", params$x)))

kable(sapply(x_vals, function(i) round(runif(params$n, 13.5, 15.5) + i, 2)))
```
现在可以单击“knit”按钮,它将使用默认参数值生成一个表:

如果您想为
x
和/或
n
使用不同的值,请打开一个单独的R脚本文件并键入以下内容:

rmarkdown::render("Worksheet.Rmd", 
                  params = list(x = c(2,4,6,8), 
                                n = 5),
                  output_file="Worksheet.html")
在上面的代码中,
render
函数使用新的
x
n
值编译我们刚刚创建的rmarkdown文档,并将输出保存到名为
Worksheet.html
的文件中。(我假设我们已将rmarkdown文档保存到名为
Worksheet.Rmd
的文件中)以下是输出结果:

当然,您也可以为
runif
函数的下限和上限添加参数,而不是将它们硬编码为13.5和15.5

如果要创建多个工作表,每个工作表具有不同的
x
值,可以将
render
放入循环中:

df = expand.grid(1:3,5:6,10:11)

for (i in 1:nrow(df)) {
  rmarkdown::render("Worksheet.Rmd", 
                    params = list(x=unlist(df[i,]), n=10),
                    output_file=paste0(paste(unlist(df[i,]),collapse="_"),".html"))
}

创建并存储隐藏块中的数据,并在需要时将数据打印为表?创建并存储隐藏块中的数据,并在需要时将数据打印为表?感谢您的帮助!这很有效。恐怕我不知道什么好的c