Удалить пробел из блока кода в вопросе переполнения стека - PullRequest
0 голосов
/ 13 ноября 2018

Я все больше редактирую ТАК сообщения. Я думаю, вы все знаете те случаи, когда OP пытается создать MCVE и ставит под сомнение их большие выборочные фреймы данных, принимая много строк кода, хотя они могут быть отформатированы в одну строку. Удаление пробела обычно делает работу и повышает читабельность поста, не нарушая его воспроизводимость.
Но сейчас я достаточно часто тупо удаляю это вручную и просто не знаю, как это сделать лучше. Я не вижу, как получить весь блок в виде строки, чтобы использовать «обычный» «заменить пробел в строке» , потому что блок содержит много кавычек, которые нужно экранировать.

Пример (со сравнительно небольшим фреймом данных):

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 голосов
/ 13 ноября 2018

Вот как я это делаю, используя замечательный пакет 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 выходами, но к этому моменту это действительно далеко от всего, что напоминает минимальный реплекс в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...