2016-09-05 47 views
0

出於內存原因,我不想將apply函數的輸出保存到文件中,但我希望在apply循環運行時將結果寫入文件。寫入應用函數內的文件

我做了以下工作例如:

checkfun <- function(TheArray, fileConn){ 
    write(as.character(TheArray[1]), fileConn) 
} 
set.seed(1) 
random_data <- matrix(nrow=10, ncol=10, data=runif(100)) 
outfile <- file("checkout.txt") 
apply(random_data, 2, checkfun, fileConn=outfile) 
close(outfile) 

讀文件checkout.txt將只包含random_data矩陣的最後一列的值(0.239629415096715)。而我希望它將該矩陣的第一行保存在checkout.txt文件中。 請注意,這是我正面臨的問題的一個示例,在矩陣中保存一行很容易,我想寫入應用函數中的文件。

有什麼我做錯了嗎?

可以肯定的是,我最初的apply循環中的函數需要相當長的時間才能完成,所以我不認爲寫入文件會產生太多的開銷,儘管它會在這裏產生相當多的開銷。

謝謝。

+0

請提供一個工作,最小,重現你的問題的樣本。 –

+0

@TimBiegeleisen,我的問題的例子是一個最小的工作示例,它重現了我的問題,如果您在R解釋器中運行代碼。如果您有興趣,我使用R版本3.2.2。 但是,我不確定您是否瞭解我所問的問題,部分基於和以前提供的答案,但現在已刪除。 用戶danielson提供了一個答案,並理解了這個問題並回答了它,所以我不認爲我需要改變我的問題的措辭。 – onGiantShoulders

+0

嘗試'TheArray [1,]'。對於矩陣,您需要顯式定義行/列。 data.frames的這種行爲是不同的。 –

回答

1

變化1行代碼來打開文件在文本模式下寫的:

outfile <- file("checkout.txt", "w") 
相關問題