2017-08-11 33 views
1

我正在使用Python(收集數據)和R(用於分析)之間的數據交換包使用feather,在Python中編寫和讀取數據的速度非常快。然而,讀取R中相同的羽化對象非常慢,約爲10MB的羽毛對象約有80K行和24列,分鐘級。每次我在本地讀羽化對象時,都不是由於網絡延遲。在R中讀取羽化對象很慢

我認爲唯一可能的是,一些變量(準確地說是5)是int64在Python中輸入的類型,當R導入它們時,它被強制爲double類型。這導致R在閱讀羽毛物體期間給出coercing int64 to double警告。任何人都可以證實這一點或有另一種解釋嗎?

編輯:強迫是沒有問題的,我重新保存在Python中int64列在int32和R上的讀數仍然只是緩慢。需要幫忙。

編輯2:示例代碼根據要求,這裏是我正在運行的代碼。只是讀羽毛對象從本質上是一個子文件夾:

library(feather) 
test_feather = read_feather("C:/my_folder/subfolder/test.feather") 
+2

我已經使用羽與R閱讀幾十億字節的非結構化文本,其速度非常快。也許你可以提供你的腳本,按照通常的stackoverflow標準,以便我們可以找到你的用戶錯誤。謝謝 – Justin

+0

@Justin我只是運行讀命令,所以我的代碼只是'data < - read_feather(「c:/my_project/subfolder/my_data.feather」)' – guy

+0

'sessionInfo()'和一個**重現的* *請舉例? –

回答

1

的問題是,由於在Linux環境中創建feather對象,而在R中的同一對象的閱讀在Windows系統中發生了什麼。我不完全知道細節,但基本上每個操作系統在將二進制數據表示在磁盤上時都有不同的規格。

我不記得在文檔中讀到這個問題/警告(雖然我認爲它是明顯的和隱含的),但也許有一點提醒可能會挽救一些未來的人犯同樣的錯誤。