2012-01-11 48 views
4

當我啓動一個R進程但實際上不附加它們時,預先加載一堆常用R包的好方法是什麼?優選以沒有副作用的方式。在內存中預加載包而不附加它

如果我做這樣的事情:

getNamespace("XML"); 

包加載和它sessionInfo()顯示出來:

loaded via a namespace (and not attached): 
[1] XML_3.6-2 

這是否有什麼副作用嗎?我特意要防止任何形式的遮罩,如果我爲大量的包做這個。這樣做的唯一目的是在調用library()函數或使用mypackage::somefunction時加快進程。

回答

3

它對搜索路徑或全球環境沒有直接的副作用(我認爲這是您所擔心的)。然而,它會加載相關軟件包並運行.onLoad,理論上它可能有副作用(它不應該,但理論上不好的軟件包作者可能會混淆你的環境)。

+1

有沒有什麼辦法可以預先加載內存中的軟件包,而無需導入它們,或者運行.onLoad? – Jeroen 2012-01-11 20:36:54

+0

你問你是否可以加載一個包沒有加載它 - 顯然,沒有:) – 2012-01-12 01:55:52

+0

嗯,我想。我可以猜到,可以將物理負載區分到內存中,並從將其導入會話的實際步驟解析/預處理功能。但是再一次,我對加載軟件包的底層機制知之甚少,所以我會告訴你這是一個愚蠢的問題:-) – Jeroen 2012-01-12 04:40:43

相關問題