代码之家  ›  专栏  ›  技术社区  ›  tjebo

在堆栈溢出问题中删除代码块中的空白

r
  •  1
  • tjebo  · 技术社区  · 7 年前

    我越来越多地编辑这样的帖子。我想你们都知道当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 回复  |  直到 7 年前
        1
  •  1
  •   Calum You    7 年前

    我就是这样做的,利用伟大的 styler 包裹第一:复制 dput 并使用RStudio中Addins菜单下的“样式选择”选项。这使得:

    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))
    

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

    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 输出,但在这一点上,它真的远远不像一个最小的reprex无论如何。