Переименование объектов в контекстно-зависимом контексте 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 (имя переменной для замены), а затем выберите CodeRename 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]