1

我有一张如下表:

table <- data.frame(number = 1:4, 
                    percentage2 = c(16, 79, 3, 3))

在 R Markdown 中,我想显示以下输出文本:

At number 1 10% achieved

为此,我通常会像这样修改表格:

table %>%
filter (number==1) -> tab 

然后我会写到 RMarkdown:

At number 1 `r (tab$percentage2)`% achieved.

有没有一种方法可以在不应用过滤器创建“选项卡”的情况下获得相同的结果?我原以为这样的事情会起作用,但事实并非如此。

At number 1 `r (tab$percentage2, number==1)`% achieved.

这是我一直在做的一个非常简单的例子,所以如果有一种方法可以不使用过滤器创建新表,这将为我节省大量时间。

4

2 回答 2

2

我看不出这将如何节省时间,但您可以避免使用创建新表

with(table, percentage2[which(number == 1)])
于 2018-04-12T15:09:21.610 回答
0

制作一个函数来为您进行格式化似乎是最容易的。这是一个基本布局,您可以针对其他场景进行自定义:

displayresults <- function(df, num){
  paste0("Number ", number, " ", 
        with(table, percentage2[which(number == num)]),
        "% achieved")
}

然后通过使用:

`r displayresults(table, 1)`

将输出

Number 1 16% achieved

一个完整的例子:

---
output: pdf_document
---

```{r}
table <- data.frame(number = 1:4, 
                    percentage2 = c(16, 79, 3, 3))


displayresults <- function(df, number){
  paste0("Number ", number, " ", 
        with(table, percentage2[which(number == 1)]),
        "% achieved")
}
```

`r displayresults(table, 1)`
于 2018-04-13T19:18:58.803 回答