2015-12-13 61 views
14

使用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

我想你正在尋找搜索字段下方的整個單詞複選框,這將確保只有一個單詞「a」匹配,但它也可以工作,如果單詞接近符號。例如。它匹配'a <-'但不匹配'va <-'或'ab <-'。 – Molx

+1

一個類似的問題已經被問到: http://stackoverflow.com/questions/14688446/search-all-open-files-in-r-studio – Raad

+0

我不搜索一個「全字」選項,也沒有可瀏覽整個項目的功能。我正在尋找的功能是自動搜索變量的引用並僅替換它們 - 而不是同名變量。在我的例子中,你的兩個建議都不會起作用,我只想在函數'c'中重命名'a'。 –

回答

21

RStudio IDE v1.0包括一個名爲「在範圍上重命名」功能,旨在做到這一點:

此功能可以很容易地重新命名變量的所有實例。 工具是上下文感知;將m更改爲m1不會更改mtcarsm1tcars

RStudio Rename in Scope animated GIF

我無法找到該功能的文檔。當我將光標放在d(要替換的變量名稱)的第一個實例上時,動畫GIF的示例工作正常,然後選擇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] 
+0

試圖讓這個功能工作使我想到這個問題。有沒有人能夠找到關於如何使用這個新功能的文檔? – BLT

+0

謝謝你的答案,我發現這個功能(可能)非常有用。但是,它是有限的。 Appart從你描述的問題中發現,它的範圍限於一個文件是特別有問題的。如果我即使用該功能編輯在另一個文件中定義的Object的變量的名稱,該名稱將僅在所選腳本中更改。 –