2016-04-25 60 views
1

在R中使用::的目的是什麼?我注意到在一些指南中,他們使用::來表示函數來自哪個包。這是否使事情運行得更快,或僅僅是指出哪些軟件包是必要的?「::」的目的是什麼?它爲什麼有用?

此外,有沒有其他目的/用於::

段從GGPLOT2包介紹:

grid::polygonGrob(
     coords$x, coords$y, 
     default.units = "native", 
     gp = grid::gpar(
     col = first_row$colour, 
     fill = scales::alpha(first_row$fill, first_row$alpha), 
     lwd = first_row$size * .pt, 
     lty = first_row$linetype 
    ) 
+2

如果兩個軟件包具有相同名稱的函數,則使用'pkg :: fn'而不是'library(pkg); fn'更安全(因爲它避免了混淆和名稱衝突)。下面是一個例子:http://stackoverflow.com/q/3241539 – Frank

+0

我不認爲問題是一樣的,也沒有任何答案直接回答這個問題。 –

回答

5

在任何給定的時間有裝載包的順序的基礎上建立的命名空間的搜索路徑。有時加載一個軟件包將會「掩蓋」一個與工作空間中已有的相同名稱的函數。這通常是在加載新包時宣佈的,但用戶可能會忽略這種擔憂。使用「::」可確保在具有正確環境的情況下從所需的軟件包訪問特定功能。嘗試用第二個庫調用重新加載函數會失敗,因爲library()函數檢查庫是否已經加載,並且如果它在搜索路徑中則什麼也不做。

相關問題