[英]Load environment using source R
決定將我的代碼划分為不同的腳本,並使用source通過“主”腳本運行它們。
其中一個腳本是“Settings.R”環境,其中包含數據庫連接詳細信息和一些其他設置。
當我嘗試使用source('Settings.R')加載腳本時,它會找到環境,我可以在控制台中訪問變量。 但是當我嘗試與數據庫建立連接時,它失敗了。
但是,如果我手動運行Settings.R腳本,然后嘗試在其他腳本中建立連接,則它可以正常工作。
# Settings script:
settings <- as.environment(list())
settings$dbConnection <- 'Driver={SQL Server};Server=SERVER INFO;Database=DATABASE;Uid=USERNAME;Pwd=PASSWORD';
# The calling script
source('Settings.R')
dbConnection <- odbcDriverConnect(settings$dbConnection)
# DO STUFF
close(dbConnection);
可能與設置環境無法全局可用有關。
我嘗試將“local”變量更改為TRUE / FALSE,這沒有用
local: TRUE,FALSE或環境,確定解析表達式的計算位置。 FALSE(默認值)對應於用戶的工作空間(全局環境),對應於調用源的環境為TRUE。
我收到以下錯誤消息(ps一點瑞典文本)
警告消息:1:在odbcDriverConnect(設置$ dbConnection)中:
[RODBC]錯誤:狀態08001,代碼17,消息[Microsoft] [ODBC SQL Server驅動程序] [DBNETLIB] Antingen finns inte SQL Serverellerånekasåtkomst。 2:在odbcDriverConnect(設置$ dbConnection)中:
[RODBC]錯誤:狀態01000,代碼53,消息[Microsoft] [ODBC SQL Server驅動程序] [DBNETLIB] ConnectionOpen(Connect())。 3:在odbcDriverConnect(設置$ dbConnection)中:ODBC連接失敗>
有任何想法嗎?
抱歉這種反應不及時! 但我遇到了類似的問題,因此對后人我有一個可能的解決方案。 您懷疑在Linux上運行此代碼。 dollar $
符號是一個特殊字符,需要在命令行字符串中進行轉義。
對於腳本'env1.R':
e1 <- new.env()
e1$x <- 1
來自R的互動:
source('env1.R');e1$x
# [1] 1
來自Rscript:
Rscript -e "source('env1.R');e1$x"
#
# <environment: 0x33ca1b0>
Rscript -e "source('env1.R');e1\$x"
# [1] 1
數據庫連接的錯誤是由傳遞環境而不是連接字符串引起的。 希望瑞典的信息支持這一理論!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.