使用 R 套件的祕訣

適用於: SQL Server 2016 (13.x) 和更新版本Azure SQL 受控執行個體

本文提供有關在 SQL Server 中使用 R 套件的實用秘訣。 這些秘訣適用於不熟悉 R 的 DBA,以及不熟悉 SQL Server 執行個體中之套件存取的有經驗 R 開發人員。

如果您不熟悉 R

身為第一次安裝 R 套件的系統管理員,了解有關 R 套件管理的一些基本知識可協助您開始著手。

套件相依性

R 套件經常依存於多個其他套件,其中有些可能在執行個體所使用的預設 R 程式庫中並未提供。 有時,套件所需的相依套件版本與已安裝的套件版本不同。 套件相依性會在內嵌於套件的 DESCRIPTION 檔案中註明,但有時並不完整。 您可以使用稱為 iGraph 的套件來完整表達相依性關係圖。

如果您需要安裝多個套件,或想要確保組織中的每個人都取得正確的套件類型與版本,建議您使用 miniCRAN 套件來分析完整的相依性鏈結。 miniCRAN 會建立可在多個使用者或電腦之間共用的本機存放庫。

套件來源、版本及格式

R 套件有多個來源,例如 CRANBioconductor。 R 語言的官方網站 (https://www.r-project.org/) 這當中列出許多資源。 許多套件都發佈到 GitHub,開發人員可從該處取得原始程式碼。

R 套件可在多個運算平台上執行。 請確定您安裝的版本是 Windows 二進為檔。

R 套件可在多個運算平台上執行。 請確定您安裝的版本是 Linux 二進為檔。

了解您要安裝至哪一個程式庫及已經安裝哪些套件

如果您先前已修改電腦上的 R 環境,在安裝任何項目之前,請確保 R 環境變數 .libPath 僅使用一個路徑。

此路徑應指向執行個體的 R_SERVICES 資料夾。 如需詳細資訊 (包括如何判斷已經安裝哪些套件),請參閱取得 R 套件資訊

如果您不熟悉 SQL Server

身為處理在 SQL Server 上執行之程式碼的 R 開發人員,保護伺服器的安全性原則會限制您控制 R 環境的能力。 下列秘訣說明一般情況,並提供在此環境中工作的建議。

R 使用者程式庫:SQL Server 上不支援

需要安裝新 R 套件的 R 開發人員已習慣隨意安裝套件,每當無法使用預設程式庫,或當開發人員不是電腦上的系統管理員時,便使用私人使用者程式庫。 例如,在一般的 R 開發環境中,使用者會將套件的位置新增至 R 環境變數 libPath,或參考完整套件路徑,就像這樣:

library("c:/Users/<username>/R/win-library/packagename")

此做法在於 SQL Server 中執行 R 解決方案時行不通,因為 R 套件必須安裝至與執行個體相關聯的特定預設程式庫中。 當預設程式庫中沒有套件可用時,如果您嘗試呼叫套件,就會收到此錯誤:

程式庫(xxx) 中發生錯誤: 沒有名為 'package-name' 的套件

如需有關如何在 SQL Server 中安裝 R 套件的資訊,請參閱在 SQL Server 機器學習服務或 SQL Server R Services 上安裝新的 R 套件

如何避免「找不到套件」錯誤

使用下列指導方針將可幫助您避免「找不到套件」錯誤。

  • 消除對使用者程式庫的相依性。

    將所需的 R 套件安裝至自訂使用者程式庫是不良的開發做法。 如果解決方案的執行者是另一位沒有程式庫位置存取權的使用者,就可能導致錯誤。

    此外,如果套件安裝在預設程式庫中,則即使您在 R 程式碼中指定不同的版本,R 執行階段仍是會從預設程式庫載入套件。

  • 確定您的程式碼能夠在共用環境中執行。

  • 避免將套件安裝成解決方案的一部分。 如果您無權安裝套件,程式碼將會失敗。 即使您有權安裝套件,您也應該將該作業與其他想要執行的程式碼個別處理。

  • 檢查您的程式碼,以確保不會呼叫已解除安裝的封裝。

  • 更新您的程式碼,以移除對 R 套件或 R 程式庫之路徑的直接參考。

  • 了解哪一個套件程式庫與執行個體相關聯。 如需詳細資訊,請參閱取得 R 套件資訊

另請參閱