2016-10-09 55 views
2

我試圖從計算器一些選項(例如1),但這也好好嘗試一下工作,所以也許有在我的代碼錯誤:
R不追加行文件(使用目錄或寫)

fileConn<-file("outputR.txt") 
for (i in 1:length(lines)){ 
    line = lines[i] 
    fields = strsplit(line, "\t")[[1]] 
    id = fields[1] 
    goIDs = fields[2:length(fields)] 
    list = as.list(GOCCANCESTOR[goIDs]) 
    text = paste(toString(id), ":", toString(goIDs)) 
    cat(text, file=fileConn, append=TRUE, sep = "\n") 

} 
close(fileConn) 

當我運行這段代碼時,它會一直覆蓋outputR.txt文件中的數據。 任何建議來解決這個問題?

+0

您可以找到[這裏](HTTP答案://堆棧overflow.com/questions/17710469/why-wont-cat-append-to-a-file-connection?rq=1)文章。 – dertomtom

回答

1

的問題是,你是在組合使用帶的FileConnection然後cat追加將無法正常工作。還有,你可以使用幾個選項,最簡單的一個是這樣的:
第一「創造」的文件,如果你想添加一個標題,例如:

header = "some header" 
## if you don't want to use a header then leave the header blank 
header ="" 
cat(text, file="outputR.txt", append=FALSE, sep = "\n") 

通知append = FALSE這是必要的,如果要清除的文件,如果它已經存在,否則,您必須使用append = TRUE
的,你可以使用文本寫入它:

text = text = paste(toString(id), ":", toString(goIDs)) 
cat(text file="outputR.txt", append=TRUE, sep = "\n") 
+0

謝謝! @Rick Beeloo,您忘記將第二個代碼示例中的標題更改爲文本,但很明顯 – Bioinformatician

+0

對不起,我編輯了我的答案! –

0

由於幫助頁面貓態:

追加:邏輯。僅在參數文件是文件的名稱(而不是連接或「| cmd」)時才使用。如果TRUE輸出將被附加到文件;否則,它會覆蓋文件的內容。

因此,如果在文件參數中使用連接,append參數的值將被忽略。

只需指定文件參數作爲文件名:

cat(text, file="outputR.txt", append=TRUE, sep = "\n")

+0

使用cat時是否需要關閉文件? @wiep – Bioinformatician

+0

如果你已經用''''''''函數打開了這個文件,那麼你必須關閉連接。如果你在'''cat'''函數中使用了文件名,cat會爲你處理這個。見源https://github.com/wch/r-source/blob/trunk/src/library/base/R/cat.R – wiep

0

你這裏有兩種選擇:

1. 以寫模式打開文件:

lines <- c("aaaaa", "bbbb") 


fileConn<-file("test.txt", "w") 
for (i in 1:length(lines)){ 
    line = lines[i] 
    cat(line, file=fileConn, append=TRUE, sep = "\n") 
} 
close(fileConn) 

使用寫入功能與append參數:

lines <- c("aaaaa", "bbbb") 

for (i in 1:length(lines)){ 
    line = lines[i] 
    write(line,file="test2",append=TRUE) 
} 
+0

我已經嘗試了第二個,這給了我同樣的問題(覆蓋) – Bioinformatician

+0

這很奇怪。 fileConn <-file(「test.txt」,「w」)不起作用?您應該發佈整個數據,包括行數變量。 –