2015-06-27 27 views
2

在下面的文章,ffbase :: as.character中的「by」參數是做什麼的?

aggregation using ffdfdply function in R

有這樣的一條線。

splitby <- as.character(data$Date, by = 250000) 

出於好奇,不知道by是什麼意思。這似乎與ff數據幀有關,但我不確定。 Google搜索和as.characteras.vector的R文檔沒有提供有用的信息。

我嘗試了一些例子,但下面的代碼給出了相同的結果。

d <- seq.Date(Sys.Date(), Sys.Date()+10000, by = "day") 
as.character(d, by=1) 
as.character(d, by=10) 
as.character(d, by=100) 

如果有人能告訴我它是什麼,我會很感激。先謝謝你。

回答

3

由於as.character.ff在內部使用默認的as.character,並且鑑於df向量可能大於RAM的事實,數據需要按塊處理。通過chunk函數可以實現塊的分區。在這種情況下,相關的方法是chunk.ff_vector。默認情況下,這將通過將getOption("ffbatchbytes")除以記錄大小來計算塊大小。但是,通過使用by來提供塊大小,可以覆蓋此行爲。

在你給的例子中,FF載體將在一個時間被轉換爲character 250000成員。

最終結果對任何by或根本沒有by都是一樣的。較大的值將導致臨時使用更大的RAM,但可能會更快地操作。

1

首先,該功能是ffbase::as.character,而不是普通的舊base::as.character

http://www.inside-r.org/packages/cran/ffbase/docs/as.character.ff 它說

as.character((x, ...)) 

Arguments: 
x: a ff vector 
...: other parameters passed on to chunk 

所以by說法正在通過一些chunk功能通過。 然後,你需要搞清楚的是正在使用的軟件包的chunk功能。鍵入?chunk,告訴我們是哪一個,然後去閱讀它的文檔,看看它的參數by做什麼。

+0

的'by'被傳遞給'chunk.default',所以在'chunk'它的文檔是因爲它得到準確的:'是:在sequence'的增量(被用作'? seq')。 – SimonG

+0

然後它只是被忽略。在R中,所有未知或未使用的參數都會被默認地忽略。這可能是原始海報的剪貼錯誤,例如,從複製seq(...)命令。 – smci

+0

我不認爲它被忽略。 'chunk.ff_vector'和'chunk.ffdf'都捕獲'...',並通過'do.call'傳遞給'chunk.default'。如果指定了'by',那麼'chunk.default'將使用它(正如文檔所建議的,與'seq'使用它相似)。 – SimonG

相關問題