【发布时间】:2017-08-11 18:04:16
【问题描述】:
我正在使用feather 包在 Python(收集数据)和 R(用于分析)之间进行数据交换,在 Python 中写入和读取数据非常快。但是,在 R 中读取相同的羽化对象非常慢,对于具有大约 80K 行和 24 列的大约 10MB 羽化对象,大约需要几分钟。每次我在本地读取羽毛对象时,它都不是由于网络延迟。
我认为唯一可能是,一些变量(准确地说是 5 个)是 Python 中的 int64 类型,当 R 导入它们时,它们会被强制转换为 double 类型。这会导致 R 在读取羽毛对象期间发出coercing int64 to double 警告。任何人都可以确认这一点还是有其他解释?
编辑:强制不是问题,我将 Python 中的 int64 列重新保存为 int32,而 R 中的读取仍然很慢。需要帮助。
编辑 2:示例代码 根据要求,这是我正在运行的代码。基本上只是从子文件夹中读取羽毛对象:
library(feather)
test_feather = read_feather("C:/my_folder/subfolder/test.feather")
【问题讨论】:
-
我已经使用 Father 和 R 来读取数 GB 的非结构化文本,而且速度非常快。也许您可以按照通常的 stackoverflow 标准提供您的脚本,以便我们发现您的用户错误。谢谢
-
@Justin 我只是在运行读取命令,所以我的代码就是
data <- read_feather("c:/my_project/subfolder/my_data.feather") -
sessionInfo()和一个可重现的例子好吗? -
@BenBolker 添加了
sessionInfo(),我不知道如何最好地发布一个可复制的示例,因为我不能简单地在这里发布我的羽毛对象。正如我所说,它来自一个 Python 数据帧,该数据帧大约有 50k 行,有 25 个变量,混合了 float64、int32、日期时间和 unicode 字符串 -
可能是因为数据首先在 Linux 系统中处理/写入,然后尝试在 Windows 机器上读取 R 中的羽毛对象?