2015-12-13 19 views
14

Ho un problema durante lo sviluppo di un progetto R utilizzando RStudio. Creo un oggetto e poi mi rendo conto che voglio dargli un altro nome. Devo quindi modificare manualmente il nome, che nei progetti più grandi è fastidioso e spesso si traduce in errori, in quanto facilmente sorvegliare una riga. La replaceall funzione del RStudio non corrispondono del tutto il nome che sto cercando di sostituire, come lo fa solo in un unico file, ma anche non considera solo i riferimenti del codice di esempio vedere variabile:Ridenominazione degli oggetti in RStudio sensibile al contesto nell'intero progetto

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

In questo esempio, mi piacerebbe rinominare asolo all'interno della funzione. Dovrei farlo tre volte, mentre replaceall farebbe confusione con il mio codice all'esterno della funzione. Non voglio modificare quello a. Cioè Visual Studio ha la possibilità di rinominare una variabile usando il tasto di scelta rapida: Ctrl + .. Quindi Visual Studio rinomina la variabile e i relativi riferimenti nell'intero progetto, senza, modificando le variabili con uguali nomi che non hanno un riferimento a quello modificato. Non sono stato in grado di trovare un'opzione come quella in RStudio. C'è un equivalente?

+1

suppongo che stai cercando la casella di controllo 'intero word' proprio sotto il campo di ricerca, questo farà sì che solo un singolo' a' è una partita, ma funziona anche se la parola è vicino a simboli . Per esempio. corrisponde 'a <-' ma non' va <-' o 'ab <-'. – Molx

+1

Una domanda simile è già stata posta: http://stackoverflow.com/questions/14688446/search-all-open-files-in-r-studio – Raad

+0

Non cerco un'opzione "Parola intera" né a funzionalità che naviga attraverso l'intero progetto. La funzionalità che sto cercando è qualcosa che cerca automaticamente i riferimenti di una variabile e li sostituisce semplicemente - non una variabile con nome identico. Entrambi i tuoi suggerimenti non funzionerebbero nel mio esempio in cui voglio solo rinominare il 'a' all'interno della funzione' c'. –

risposta

21

RStudio IDE v1.0 include una funzione denominata "Rinomina in scope" che si propone di fare questo:

Questa caratteristica lo rende facile per rinominare tutte le istanze di una variabile. Lo strumento è sensibile al contesto; il cambio di a m1 non cambierà mtcars a m1tcars.

RStudio Rename in Scope animated GIF

non riesco a trovare la documentazione per la funzione. L'esempio della GIF animata funziona anche se posiziono il cursore sulla prima istanza di d (il nome della variabile da sostituire), quindi selezionare Code ->Rename in Scope. Tuttavia, quando provo gli stessi passaggi ma a partire dalla seconda istanza, non funziona. Quindi a quanto pare hai bisogno di partire dal luogo in cui è stata assegnata la variabile?

## 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() 

In pratica, sembrano ancora esserci bug che impediscono il funzionamento della funzione. Ad esempio, l'esempio seguente non funziona a meno che l'intestazione non venga rimossa.

## Header #### 
example <- 1:10 
example[1] 
+0

Cercando di far funzionare questa funzione mi ha portato a questa domanda. Qualcuno è stato in grado di trovare la documentazione su come utilizzare questa nuova funzione? – BLT

+0

Grazie per la risposta, trovo la funzionalità (potenzialmente) abbastanza utile. Tuttavia, è limitato. A parte il problema che hai descritto, trovo particolarmente problematico che l'ambito sia limitato a un file. Se io utilizzo la funzione per modificare il nome di una variabile di un oggetto definito in un altro file, il nome verrà modificato solo nello script scelto. –