Markdown - 如果没有返回任何行,则返回文本而不是空表

时间:2016-12-08 22:35:58

标签: r knitr r-markdown

对/ knitr使用markdown会生成报告。我使用以下内容从数据框中选择缺少值的行,并将其显示为输出中的表。

p1

如果缺少值,则会创建一个很好的表。如果没有缺失值,我希望在生成报告时返回文本消息“none missing”而不是我的word / PDF / html中的空表。

2 个答案:

答案 0 :(得分:2)

添加if语句可以很好地处理这个问题。只需检查z数据框中的行数是否等于0.如果不是,请打印表格!下面是一个复制它的小例子。

---
output: pdf_document
---
```{r, comment = NA, echo = FALSE}
library('knitr')

df <- data.frame(colname1 = c(3, 1, 2),
                 colname2 = c(7, 3, 5),
                 colname3 = c(7, 8, 4))

# Uncomment the lines below to see how it handles data with NA values.
# df <- data.frame(colname1 = c(NA, 1, 2),
#                  colname2 = c(NA, 3, 5),
#                  colname3 = c(7, 8, NA))

z <- df[is.na(df$colname1) | is.na(df$colname2) | is.na(df$colname3), ]
z <- z[, c('colname1', 'colname2', 'colname3')]

if(nrow(z) == 0){
  cat('None Missing')
} else{
  kable(z)
}

```

答案 1 :(得分:0)

我正在为文本寻找更好的格式。我建议用

来调整@Sam的回答
if(nrow(z) == 0){
kable(NULL, caption = 'No records available') 
} else{
  kable(z)
}

仍然不完美,但至少它反映了你文档的字体。