我正在運行加載多個文件的腳本。在達到50個加載的文件時,我收到一個錯誤「所有連接正在使用中」。在R中關閉read.table連接
我想我必須關閉連接,但我遇到以下問題。
con = file(paste('/home/rstudio/userstats/',cuserid,'.tsv',sep=""))
userstats_current = read.table(con, sep="\t", header=0, quote="", stringsAsFactors=F)
close(con)
Error in close.connection(con) : invalid connection
如果我鍵入以下然而,一切工作正常:
con = file(paste('/home/rstudio/userstats/',cuserid,'.tsv',sep=""))
close(con)
應用時,函數read.table做一些事情發生的連接,我怎麼能設法關閉這些連接?
UPDATE
謝謝您的迴應。問題是,當我運行一個foreach循環,即使有一個核心後一段時間我不斷得到這個所有連接錯誤。
registerDoMC(2)
matrix <- foreach(i=1:nrow(sample), .combine=rbind) %dopar% {....}
也許一旦讀取到EOF(文件結束)它會自動關閉?開放的文檔說「在一般情況下,使用連接的函數將打開它們,如果它們沒有打開,但是再次關閉它們,所以要明確地打開一個打開的連接。」 – Frank
而不是顯式創建連接,爲什麼不把文件名傳遞給'read.table'?一般來說,R足夠聰明,可以關閉它自己打開的連接。 –
這適用於1000個文件,所以我懷疑問題在別處(例如,也許在RStudio中?)。 'x < - list(); for(i in 1:1000){fn < - paste0(「z」,i);寫(rnorm(5),fn); f < - file(fn); x [[i]] < - read.table(f)}' –