我的论文数据采集过程涉及从各种开源软件库中提取数据,并将其保存为[R对象供日后分析的对象。管理来自不同来源的
为了防止已处理的数据的重新下载和再加工(大部分数据是归档),我使用digest()
计算校验和(散列)用于数据源的URL,然后用比较传入的URL R数据文件以相应的校验和命名。如果一个URL的校验和与现有的R数据文件匹配,我会跳过这个URL的处理。我打算为其他来源使用类似的方法,不是通过URL检索数据,而是通过SQL查询。在这种情况下,我考虑使用digest()
来计算每个数据集合SQL查询的校验和。
但是,我的主要问题是“当我想从数据文件中将R对象加载回R时,什么是最佳/最佳/正确的方法来区分R对象?。我考虑以下两种方法是:
在保存数据为R的对象的过程中,动态地创建一个查找表与网址和对应校验。这将允许我从R数据文件名称追踪任何校验和到相应的URL以及相应的数据文件(表格)。
在保存数据的过程中,请使用
attr()
来存储适当的信息(完整URL或仅用于基于URL的数据收集的URL文件名,或用于基于查询的数据收集的SQL查询)。
我看到的,因为它允许把URL或SQL查询信息的即时查询第一种方法(查找表)的利益,而第二种方法(属性)需要通过整个列表循环为每个数据源寻找匹配信息。同时,属性方法在保持元数据接近数据本身方面似乎更好,而查找表方法将其移动到R代码层,这创建了额外的依赖关系。
请告知这种情况和我的想法。
我已经实现了我提到的(属性和查找表)这两种方法 - 只是为了看看它是多么容易 - 但后来意识到,我可以保持查找表中没有R中的代码,但作为R对象,存储在'.RData'文件。这将允许我将元数据存储在数据附近,并为不同的数据源维护不同的查找表。 –