Переименование объектов в контекстно-зависимом контексте 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
.
![RStudio Rename in Scope анимированный GIF]()
Я не могу найти документацию для этой функции. Пример из анимированного 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]