我正在越来越多地编辑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))
答案 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的距离还很遥远。