Используйте Styler для замены T на TRUE, F на FALSE в коде R - PullRequest
2 голосов
/ 13 января 2020
library("styler")
myugly_code <- "if ( x==T ) print( 'y' )"
style_text(myugly_code)
#> if (x == T) print("y")

Создано в 2020-01-13 пакетом представ (v0.3.0)

Я признаю, что мы всегда должны использовать TRUE или FALSE вместо T и F в первую очередь при написании R кода. Однако при редактировании предыдущего кода или кода, написанного другими пользователями с помощью T и F, возможно ли использовать пакеты, такие как styler, чтобы заменить все T и F на TRUE и FALSE. В приведенном выше коде я хотел бы получить:

#> if (x == TRUE) print("y")

Ответы [ 2 ]

1 голос
/ 14 января 2020
Стилер

этого не делает, потому что вы можете иметь

T <- f(x)
T

или назначить действительно любое значение для T, поэтому заменить T в общем случае небезопасно. Чтобы обнаружить (неправильное) использование T и F, используйте полнотекстовый поиск или https://github.com/jimhester/lintr, чтобы обнаружить и разрешить его вручную.

Вы можете найти обсуждение топи c здесь: https://github.com/r-lib/styler/issues/3

1 голос
/ 13 января 2020

Я не знаю о стайлере, но вы можете заменить 'T' на 'TRUE', используя gsub. Символ '\\b' является границей слова, поэтому заменяется только символ 'T' с границей слова на каждой стороне, а не, например, 'T' в 'Test'.

sub_TF <- function(s){
  s <- gsub('\\bT\\b', 'TRUE', s)
  gsub('\\bF\\b', 'FALSE', s)
}

sub_TF("list(T, 'Test', F, 'Fox')")
# [1] "list(TRUE, 'Test', FALSE, 'Fox')"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...