Переименование объектов в RStudio контекстно-зависимо в рамках всего проекта

У меня есть проблема при разработке R-проекта с использованием RStudio. Я создаю объект, а потом понимаю, что хочу дать ему другое имя. Затем мне нужно вручную изменить имя, что в больших проектах раздражает и часто приводит к ошибкам, так как я легко наблюдаю за одной строкой. replaceall Функция RStudio не совсем совпадает с именем, которое я пытаюсь заменить, поскольку она делает это только в одном файле, она также не учитывает только ссылки на переменные, см. пример кода:

f <- function(a){
    b <- a
return(a+b)
}
a <- 5;
a <-  a + f(1)

В этом примере я хотел бы переименовать a только внутри функции. Я должен был бы сделать это трижды, пока replaceall испортит мой код за пределами функции. Я не хочу редактировать это a, Т.е. в Visual Studio есть опция переименования переменной с помощью горячей клавиши: Ctrl + ., Затем Visual Studio переименовывает переменную и ее ссылки во всем проекте, не редактируя переменные с одинаковыми именами, которые не имеют ссылки на отредактированную. Я не смог найти такой вариант в RStudio. Есть ли эквивалент?

1 ответ

Решение

RStudio IDE v1.0 включает в себя функцию "Переименовать в области", которая предназначена для этого:

Эта функция позволяет легко переименовать все экземпляры переменной. Инструмент учитывает контекст; изменения m в m1 не изменится mtcars в m1tcars,

RStudio переименовать в SIF анимированный 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]
Другие вопросы по тегам