2015-12-13 17 views
14

Ich habe ein Problem bei der Entwicklung eines R-Projekts mit RStudio. Ich erschaffe ein Objekt und erkenne später, dass ich ihm einen anderen Namen geben möchte. Ich muss dann den Namen manuell ändern, was bei größeren Projekten lästig ist und oft zu Fehlern führt, da ich leicht eine Zeile überwache. Die replaceall Funktion von RStudio nicht ganz mit dem Namen übereinstimmen ich zu ersetzen versuchen, wie es funktioniert nur so in einer Datei, es ist auch nur die Referenzen des Variablen siehe Beispielcode nicht zu berücksichtigen:Umbenennen von Objekten in RStudio kontextsensitiv im gesamten Projekt

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

In diesem Beispiel möchte ich anur innerhalb der Funktion umbenennen. Ich würde das dreimal machen müssen, während replaceall würde meinen Code außerhalb die Funktion durcheinander bringen. Ich möchte das a nicht bearbeiten. I.e. Visual Studio verfügt über eine Option zum Umbenennen einer Variablen mit dem Hotkey: Ctrl + .. Dann benennt Visual Studio die Variable und ihre Referenzen im gesamten Projekt um, ohne Bearbeiten von gleichnamigen Variablen, die keinen Verweis auf die bearbeitete haben. Ich habe in RStudio keine solche Option gefunden. Gibt es ein Äquivalent?

+1

Ich nehme an, Sie suchen nach dem 'Whole word' Kontrollkästchen direkt unter dem Suchfeld, dies wird sicherstellen, dass nur ein einzelnes' a' übereinstimmt, aber es funktioniert auch, wenn das Wort nahe bei Symbolen ist . Z.B. es entspricht 'a <-' aber nicht' va <-' oder 'ab <-'. – Molx

+1

Eine ähnliche Frage wurde bereits gestellt: http://StackOverflow.com/Questions/14688446/Search-All-Open-Files-In-R-Studio – Raad

+0

Ich suche nicht nach einem 'Whole Word' Option noch ein Funktionalität, die durch das gesamte Projekt navigiert. Die Funktionalität, nach der ich suche, ist etwas, das automatisch nach Referenzen einer Variablen sucht und nur diese ersetzt - keine identisch benannte Variable. Beide Vorschläge würden in meinem Beispiel nicht funktionieren, wenn ich nur das "a" innerhalb der Funktion "c" umbenennen möchte. –

Antwort

21

RStudio IDE v1.0 enthält eine Funktion „Umbenennen in scope“ aufgerufen, dies tun soll:

Diese Funktion macht es einfach, alle Instanzen einer Variablen umbenennen. Das Tool ist kontextsensitiv; Ändern m zu m1 wird nicht geändert mtcars zu m1tcars.

RStudio Rename in Scope animated GIF

kann ich keine Dokumentation für die Funktion finden. Das Beispiel aus dem animierten GIF funktioniert jedoch, wenn ich den Cursor auf die erste Instanz von d (der zu ersetzende Variablenname) setze und dann Code ->Rename in Scope auswähle. Wenn ich jedoch die gleichen Schritte versuche, aber von der zweiten Instanz ausgehend, funktioniert es nicht. Sie müssen also von der Stelle aus beginnen, an der die Variable zugewiesen ist?

In der Praxis scheint es immer noch Fehler zu geben, die das Funktionieren der Funktion verhindern. Zum Beispiel funktioniert das folgende Beispiel nicht, wenn der Header nicht entfernt wird.

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

Der Versuch, diese Funktion zum Laufen zu bringen, führte mich zu dieser Frage. Hat jemand eine Dokumentation zur Verwendung dieses neuen Features gefunden? – BLT

+0

Danke für die Antwort, ich finde die Funktion (potentiell) ziemlich nützlich. Es ist jedoch begrenzt. Neben dem beschriebenen Problem finde ich es besonders problematisch, dass der Umfang auf eine Datei beschränkt ist. Wenn ich das Merkmal zum Bearbeiten des Namens einer Variablen eines Objekts verwende, das in einer anderen Datei definiert ist, wird der Name nur in dem gewählten Skript geändert. –