簡體   English   中英

使用源R加載環境

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM