Сочетание клавиш RStudio для преобразования строк в объекты и наоборот? (т.е. удаляйте или добавляйте кавычки вокруг имен) - PullRequest
0 голосов
/ 21 июня 2019

Есть ли сочетание клавиш для преобразования чего-то вроде rm("a", "b", "c", "d") в rm(a, b, c, d)?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Не ярлык RStudio, но вы можете сделать, ctrl + F , установить флажок Regex и заменить \"(.*?)\" на \1


Возвращаясь к этому позже, вот две функции, которые работают в обоих направлениях, Вы можете создать надстройку из них и запустить запуск с помощью горячих клавиш

quote_vars <- function(expr) {
  expr <- substitute(expr)
  vars <- all.vars(expr)
  vars <- setNames(as.list(vars), vars)
  do.call(substitute, list(expr, vars))
}

unquote_strings <- function(expr) {
  expr <- deparse(substitute(expr))
  expr <- gsub("\"(.*?)\"", "\\1", expr)
  parse(text= expr)[[1]]
}

quote_vars(rm(a, b, c, d))
#> rm("a", "b", "c", "d")
unquote_strings(rm("a", "b", "c", "d"))
#> rm(a, b, c, d)

Создано в 2019-07-05 пакетом Представление (v0.3.0)

0 голосов
/ 21 июня 2019

Для преобразований наоборот, опция

f1 <- function(...) {

    v1 <- rlang::enexprs(...)
    if(is.character(v1[[1]])) {
        rlang::syms(v1)

    } else purrr::map(v1, ~ rlang::as_name(.x))
}

-testing

f1("a", "b", "c", "d") # changes to symbol
#[[1]]
#a

#[[2]]
#b

#[[3]]
#c

#[[4]]
#d


f1(a, b, c, d) # changes to character
#[[1]]
#[1] "a"

#[[2]]
#[1] "b"

#[[3]]
#[1] "c"

#[[4]]
#[1] "d"

ПРИМЕЧАНИЕ. Возвращение списка с согласованным поведением

с rm,мы можем использовать do.call

out <- f1("a", "b", "c", "d")
do.call("rm", out)
a
#Error: object 'a' not found
b
#Error: object 'b' not found

data

a <- b <- c <-d <- 1:5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...