r - 将图像添加到R中的表格状输出中

标签 r dataframe knitr

我有一个简单的数据结构:案例是国家/地区,对于每个国家/地区,我都有几个数字变量。像这样:

dat <- data.frame(country = c("Belgium", "Germany", "Holland", "Ireland"), Var1 = 1:4, Var2 = 11:14)
print(dat, row.names = FALSE)

 country Var1 Var2
 Belgium    1   11
 Germany    2   12
 Holland    3   13
 Ireland    4   14

该表仍需格式化,标题以粗体显示,行以灰色或白色交替显示。

现在,我要在“国家”和“Var1”之间添加两列。新的第一列称为“标志”,其中应包含该国家的标志。第二个新列称为“已标记”,其中包含一个红色标记的图像,即该国家在特定人权问题上的得分很差;如果橙色标记得分为中等,则显示橙色标记,否则则没有。

如何创建在R中以这种方式打印的对象?如何在这样的布局中将图像与数据结合起来?

(最终,这将是使用knitr创建的更大文档的一部分)

最佳答案

如果您将rmarkdown package一起使用 knitr ,这非常简单-只需使用Markdown语法![]()即可包含图像,例如

---
title: "Flags"
author: "Yihui Xie"
date: "2014/08/03"
output: html_document
---

```{r results='asis'}
dat <- data.frame(
  country = c('Canada', 'United Kindom'),
  abbr = c('ca', 'gb'),
  var1 = c(1, 2),
  var2 = rnorm(2)
)
dat$flag <- sprintf('![](http://flagpedia.net/data/flags/mini/%s.png)', dat$abbr)
library(knitr)
kable(dat)
```

如果需要LaTeX/PDF输出,则必须自己下载这些图像。这是一个例子:
---
title: "Flags"
author: "Yihui Xie"
date: "2014/08/03"
output: html_document
---

```{r}
dat <- data.frame(
  country = c('Canada', 'United Kindom'),
  abbr = c('ca', 'gb'),
  var1 = c(1, 2),
  var2 = rnorm(2)
)
dat$file <- paste0(dat$abbr, '.png')
dat$link <- paste0('http://flagpedia.net/data/flags/mini/', dat$file)
dat$flag <- sprintf('![](%s)', dat$file)
for (i in seq_len(nrow(dat))) {
  if (!file.exists(dat$file[i])) xfun::download_file(dat$link[i])
}
knitr::kable(dat[, -c(5, 6)])
```

关于r - 将图像添加到R中的表格状输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106481/

相关文章:

r - 如何使代码块依赖于 knitr/rmarkdown 中的所有先前 block ?

r - emo::ji 不会在针织文档中呈现

R:在保留数据帧其余部分的特定列上应用函数

r - data.frame 中列顺序的约束随机化

r - 用 R 下载整个比特币交易链

python - 解析 pandas read_json 中的 json 值

scala - 添加包含按 df 分组的列数 og 的列

r - 使用 Markdown -> pandoc 更改 HTML5 幻灯片中的字体大小

r - 仅将数据集过滤到 R 列中的第一个 NA 之后

r - 将星期几转换为 R 中的数字