在堆栈溢出问题中

时间:2018-11-12 23:07:35

标签: r

我正在越来越多地编辑SO帖子。我猜大家都知道当OP尝试产生MCVE并将其大样本数据帧dput放入问题中时的情况-花费很多行代码,尽管它们可以格式化为一行。删除空白通常可以完成工作,并增加帖子的可读性,而不会损害其可重复性。
但是,我现在经常愚蠢地手动删除了它,却不知道如何做得更好。为了使用“常规” 'replace whitespace in string',我看不到如何将整个块评估为字符串,因为该块包含许多需要转义的引号。

一个示例(具有较小的 数据框):

structure(list(a = 1:5, b = structure(1:5, .Label = c("a", "b", 
"c", "d", "e"), class = "factor")), class = "data.frame", row.names = c(NA, 
-5L))

应简化为:

structure(list(a=1:5,b=structure(1:5,.Label=c("a","b","c","d","e"),class="factor")),class="data.frame",row.names=c(NA,-5L))

1 个答案:

答案 0 :(得分:1)

这就是我使用好的styler软件包的方法。首先:复制dput并使用RStudio的“加载项”菜单下的“样式选择”选项。这给出了:

structure(list(a = 1:5, b = structure(1:5, .Label = c(
  "a", "b",
  "c", "d", "e"
), class = "factor")), class = "data.frame", row.names = c(
  NA,
  -5L
))

然后,我们可以使用Alt +拖动脚本左侧的边缘,然后按Backspace键删除换行符,并保留此换行符(请注意自动缩进留下的虚假空格)

structure(list(a = 1:5, b = structure(1:5, .Label = c(  "a", "b",  "c", "d", "e"), class = "factor")), class = "data.frame", row.names = c(  NA,  -5L))

然后,再进行一次“样式选择”以使空格保持一致:

structure(list(a = 1:5, b = structure(1:5, .Label = c("a", "b", "c", "d", "e"), class = "factor")), class = "data.frame", row.names = c(NA, -5L))

总体而言,给定dput,通常只需几秒钟。主要限制是,这将无法与真正的巨大dput输出一起使用,但到那时为止,它实际上与最小化reprex的距离还很遥远。