【问题标题】:How to remove display of strange characters in R-Markdown chunk output?如何删除 R-Markdown 块输出中奇怪字符的显示?
【发布时间】:2019-11-08 22:05:03
【问题描述】:

我从几个栅格中获取频率,并且在 R-Markdown 中这样做。我正在使用lapply 从列表中的栅格中获取频率。当我将这些频率存储在 data.frames 列表中时,块输出会显示一些意外的非数字字符。

示例栅格:

```{r}
require(raster)

r1 <- setValues(raster(nrows = 10, ncols = 10), sample(1:10, 100, replace = TRUE))
r2 <- setValues(raster(nrows = 10, ncols = 10), sample(1:10, 100, replace = TRUE))

rList <- list(r1, r2)
```

获取频率:

```{r}
lapply(rList, function(ras) {
  data.frame(freq(ras))
})
```

上述块的输出:

如果我只显示数据框本身,则不会显示这些字符:

```{r}
lapply(rList, function(ras) {
  data.frame(freq(ras))
})[[2]]
```

如果不使用data.frame,也会显示正确的值:

```{r}
lapply(rList, function(ras) {
  freq(ras)
})
```

我尝试使用 UTF-8 编码保存 Rmd,并且我使用的是 RStudio 1.2.5019。任何关于如何让数据框列表正确显示的想法都将不胜感激。

编辑:请注意,字符不会在生成的 html 文件中的任何场景中显示,仅在 R Notebook 文件本身的特定块中显示。

编辑 2:

生成奇怪字符的笔记本的完整代码和 YAML 标头如下:

---
title: "R Notebook"
output: html_notebook
---

```{r}
require(raster)

r1 <- setValues(raster(nrows = 10, ncols = 10), sample(1:10, 100, replace = TRUE))
r2 <- setValues(raster(nrows = 10, ncols = 10), sample(1:10, 100, replace = TRUE))

rList <- list(r1, r2)
```

```{r}
lapply(rList, function(ras) {
  data.frame(freq(ras))
})
```


```{r}
lapply(rList, function(ras) {
  data.frame(freq(ras))
})[[2]]
```

【问题讨论】:

  • 你有一些花哨的表格格式。如果我用这些块制作一个普通的 .Rmd 文件,我会得到纯 R 代码输出,而不是带有列类型和下划线的斑马条纹表。除非这是默认的 RStudio 样式(我正在从 R 控制台进行测试),否则您能否提供带有标头等的完整 Rmd?
  • @Spacedman - 抱歉耽搁了,感谢您的回复。据我所知,这是 R Studio 中笔记本的默认输出,我没有对 yaml 标头或块设置进行任何更改。我已经包含了为我生成奇怪字符的完整笔记本代码。
  • 我无法复制此问题。在 Win 10 和 Ubuntu Linux 上试过。我得到的是数字而不是上面显示的字符。
  • 此处列出了类似的问题github.com/rstudio/rstudio/issues/3163
  • 如果您还没有找到解决方案,请在此处报告您的问题。

标签: r r-markdown


【解决方案1】:

检查此代码是否正确显示了输出。您可以使用print

在预览 html 笔记本输出时未显示任何 UTF 字符

如果你想使用块输出比你可以使用

as.data.frame()

【讨论】:

  • @Bill Chen - 你在你的系统上使用 Linux 吗?
  • 谢谢,但我希望将块输出与可滚动表一起使用,这样print 将不起作用。
  • 是的,这是一种解决方法!我真的想弄清楚这里发生了什么的为什么 - 我在两个不同系统上的安装发生了什么,我首先得到了奇怪的格式。但是,如果没有其他人可以复制我的错误并帮助我正确修复它(而不是一种解决方法,其中有几个选项),我会将这个答案标记为正确 - 只是给它几天。感谢您的帮助!
  • 就像发布问题一样,当您发布答案时,远将代码发布为其他人可以使用的文本而不是图片更有帮助。
【解决方案2】:

我以前曾使用相同的“ÿ”字符有过这种经历,但没有考虑太多(Mac RStudio)。我已经能够重新运行我的代码并且无法在同一个块上重现它,即使在同一个会话中也是如此。

我确实经常使用formattable 包,而且由于人们提到了格式方面,也许这在起作用?虽然我很难想象到底是怎么做的。

我确实找到了有关 Pandoc 在某些字符输入上呈现 Unicode 工件以及 Pandoc 转换为 UTF-8 的相关项目。由于工作流程涉及knitr 喂养 Pandoc,也许这是一部分?

不能完全连接点,但希望它可以帮助其他人把它放在一起。

我不记得最近发生过这种情况,因此可能一种方法是更新 pandoc 和 knitr(甚至完全是 RStudio——我在 1.2.5019)?

【讨论】:

  • Fwiw,我现在无法在您的光栅代码上复制该问题。
猜你喜欢
  • 2014-10-04
  • 1970-01-01
  • 2016-12-14
  • 2015-10-31
  • 1970-01-01
  • 2018-03-28
  • 2013-09-27
  • 2019-06-19
  • 1970-01-01
相关资源
最近更新 更多