Переименование объектов в RStudio контекстно-зависимо в рамках всего проекта
У меня есть проблема при разработке R-проекта с использованием RStudio. Я создаю объект, а потом понимаю, что хочу дать ему другое имя. Затем мне нужно вручную изменить имя, что в больших проектах раздражает и часто приводит к ошибкам, так как я легко наблюдаю за одной строкой. replace
all
Функция RStudio не совсем совпадает с именем, которое я пытаюсь заменить, поскольку она делает это только в одном файле, она также не учитывает только ссылки на переменные, см. пример кода:
f <- function(a){
b <- a
return(a+b)
}
a <- 5;
a <- a + f(1)
В этом примере я хотел бы переименовать a
только внутри функции. Я должен был бы сделать это трижды, пока replace
all
испортит мой код за пределами функции. Я не хочу редактировать это a
, Т.е. в Visual Studio есть опция переименования переменной с помощью горячей клавиши: Ctrl
+ .
, Затем Visual Studio переименовывает переменную и ее ссылки во всем проекте, не редактируя переменные с одинаковыми именами, которые не имеют ссылки на отредактированную. Я не смог найти такой вариант в RStudio. Есть ли эквивалент?
1 ответ
RStudio IDE v1.0 включает в себя функцию "Переименовать в области", которая предназначена для этого:
Эта функция позволяет легко переименовать все экземпляры переменной. Инструмент учитывает контекст; изменения
m
вm1
не изменитсяmtcars
вm1tcars
,
Я не могу найти документацию для этой функции. Пример из анимированного GIF работает, хотя, когда я помещаю курсор на первый экземпляр d
(имя переменной для замены), а затем выберите Code
-> Rename in Scope
, Однако, когда я пытаюсь выполнить те же действия, но начиная со второго экземпляра, это не работает. Итак, по-видимому, вам нужно начать с того места, где назначена переменная?
## Example from animated GIF
library(dplyr)
library(magrittr)
library(ggplot2)
d <- mtcars %>% ## Instance 1
filter(cyl > 4) %>%
select(hp, mpg)
ggplot(data = d, aes(x=hp, y=mpg)) + ## Instance 2
geom_point() +
geom_smooth()
На практике все еще существуют ошибки, препятствующие работе этой функции. Например, приведенный ниже пример не работает, если заголовок не удален.
## Header ####
example <- 1:10
example[1]