2014-11-14 112 views
0

我喜歡在RStudio中使用View函數來查看我的數據是否正確加載。 但是,當數據爲「大」時,此功能需要大量時間才能運行。爲什麼`View`函數需要這麼長時間才能運行?

這是一個2MM行和

> system.time(View(bd_cadastral)) 
user system elapsed 
3.156 0.004 3.164 

在RStudio,該函數僅示出第一行1000的定時9列data.frame,所以如果我做View(bd_cadastral[1:1000,]

> system.time(View(bd_cadastral[1:1000,])) 
    user system elapsed 
    0.068 0.000 0.089 

這不應該在同一時間?

+0

那麼需要一點時間在200萬行上製作一個類似電子表格的HTML文檔。是什麼讓你認爲1000行將花費200萬的時間? – 2014-11-14 18:34:36

+0

我可以想象,但爲什麼函數在每一行都使電子表格顯示,只顯示前1000個? – 2014-11-14 18:36:10

+0

我真的覺得這個問題應該直接進入RStudio開發團隊:P – Barranka 2014-11-14 18:46:47

回答

3

如果你看看這個函數的內部,你會發現它並不直接把它要顯示的子集。它首先試圖將整個東西強制轉換爲數據框,並在可能轉換的輸入上使用lapplysapply。即使在最後,它也會將整個變量傳遞給C程序,我假設它將執行子集化。所有這些步驟對於最初較小的對象工作得更快。

如果你問它爲什麼這樣構建......如果我知道的話。可能的情況下,C程序的限制改變或什麼的。

備註:Ctrl +點擊某個功能會引導您查看其代碼。對於像這樣的問題,它可能是有用的

+0

順便說一句,當我嘗試測試程序的各個部分時,我注意到我不能使用'.External2(C_dataviewer,x,title)''命令,因爲它在查看函數外部提供了一個沒有找到錯誤的對象。我試着定義另一個功能,但它不起作用。有誰知道爲什麼? – OganM 2014-11-14 21:15:11

相關問題