RStudio 如何确定控制台宽度,为什么它似乎总是出错?

How does RStudio determine the console width, and why does it seem to be getting it consistently wrong?

我刚刚在 RStudio 中发现了 wid <- options()$width,它似乎是我日常控制台使用中很多烦恼的来源(或者更确切地说,更接近来源)。我应该预先说明我目前在 Linux Mint 17.3(基于 Ubuntu 14.04.3 LTS)

上使用 R 3.2.2、RStudio 0.99.491

据我了解,wid 应该以字符来衡量——如果 wid 等于 52,那么一个人应该能够在屏幕上显示两次字母表(给定固定宽度的默认字体),但事实并非如此:

如您所见,尽管 wid 等于 52,但我无法将字母表填满两次 -- 我少了 6 个字符。我还注意到这意味着它 而不是 仅仅是因为存在命令提示符箭头和 space (> ).

这个问题似乎有点成比例——如果我有 wid 最多 78 个,我只能容纳 70 个字符;最多 104、93,所以 wid 相当一致地减少了大约 88%(旁注:这也表明我的假设 wid 以字符为单位可能是正确的)。

由此产生的问题是,控制台输出经常会超出其预期的行,使输出变得丑陋且难以理解;举个例子,为我生成的简单片段 setDT(lapply(1:30, function(x) 1:3))[]:

我似乎很清楚,输出是在实践中不可用的屏幕宽度上尝试的——在内部,比实际存在的屏幕宽度更大的屏幕宽度用于打印。

这给我留下了三个问题:

  1. options()$width是如何确定的?
  2. 为什么总是错误?
  3. 我们可以做些什么来克服这个错误?

找到 post about this on Rstudio support and it seems the issue has to do with high DPI Displays; there is a claimed bug fix in RStudio version 0.99.878 (released just today! as luck would have it), according to the release notes:

Bug Fixes

...

  • Correct computation of getOption(“width”) on high DPI displays

希望这对遇到此问题的其他人有所帮助!我很想 post 关于这个 /r/oddlysatisfying B-)

如果有人能找到它,我很想在 RStudio GitHub 页面上看到相关的提交(我运气不好)。