Ari*_*man 21 yaml metadata r roxygen
我现在正在开展一个项目,我从一堆不同的来源慢慢积累了一堆不同的变量.作为一个有点聪明的人,我在主"original_data"目录下为每个子目录创建了一个不同的子目录,并包含一个.txt文件,其中包含我从中获取数据的URL和其他描述符.作为一个不够聪明的人,这些.txt文件没有结构.
现在,我面临着编译一个记录所有不同数据源的方法部分的任务.我愿意经历并为数据添加结构,但后来我需要找到或构建一个报告工具来扫描目录并提取信息.
这似乎ProjectTemplate已经存在,但我似乎无法在那里找到那种功能.
这样的工具存在吗?
如果没有,应该考虑哪些因素才能提供最大的灵活性?一些初步想法:
Ite*_*tor 16
这是一个非常好的问题:人们应该非常关注数据收集,聚合,转换等所有序列,这些都构成了统计结果的基础.不幸的是,这并没有广泛实践.
在解决您的问题之前,我想强调一下,这似乎与管理数据来源的总体目标密切相关.我不妨给你一个Google链接来阅读更多内容.:)您可以找到许多资源,例如调查,软件工具(例如维基百科条目中列出的一些),各种研究项目(例如原产地挑战)等等.
这是一个概念性的开端,现在解决实际问题:
我现在正在开展一个项目,我从一堆不同的来源慢慢积累了一堆不同的变量.作为一个有点聪明的人,我在主"original_data"目录下为每个子目录创建了一个不同的子目录,并包含一个.txt文件,其中包含我从中获取数据的URL和其他描述符.作为一个不够聪明的人,这些.txt文件没有结构.
欢迎大家的噩梦.:)
现在,我面临着编译一个记录所有不同数据源的方法部分的任务.我愿意经历并为数据添加结构,但后来我需要找到或构建一个报告工具来扫描目录并提取信息.
没问题. list.files(...,recursive = TRUE)可能会成为一个好朋友; 也看到listDirectory()在R.utils.
值得注意的是,填写数据源的方法部分是数据来源中的一个狭窄的应用程序.事实上,CRAN任务视图的可重复研究仅关注文档,这是相当不幸的.根据我的经验,数据来源的目标是可重复研究的一个子集,数据处理和结果的文档是数据来源的子集.因此,这个任务观点在可重复研究方面仍处于起步阶段.它可能对你的目标有用,但你最终会超过它.:)
这样的工具存在吗?
是.什么是这样的工具?Mon dieu ...一般来说它非常以应用为中心.在R中,我认为这些工具没有得到太多关注(*见下文).这是相当不幸的 - 要么我错过了什么,要么R社区遗漏了我们应该使用的东西.
对于您所描述的基本过程,我通常使用JSON(请参阅此答案和此答案以获取有关我所做的评论).对于我的大部分工作,我将其表示为"数据流模型"(顺便说一句,该术语可能含糊不清,特别是在计算环境中,但我的意思是从统计分析的角度来看).在许多情况下,此流程是通过JSON描述的,因此从JSON中提取序列以解决特定结果的产生并不困难.
对于更复杂或受监管的项目,JSON是不够的,我使用数据库来定义数据的收集,转换等方式.对于受监管的项目,数据库可能有大量的身份验证,日志记录等等,以确保数据出处有很好的记录.我怀疑那种数据库远远超出你的兴趣,所以让我们继续......
1.应该使用标记语言(YAML?)
坦率地说,无论你需要什么来描述你的数据流都是足够的.大多数时候,我发现有足够好的JSON,良好的数据目录布局和良好的脚本排序.
2.应扫描所有子目录
完成: listDirectory()
3.为了便于(2),应该使用数据集描述符的标准扩展
琐事:".json".;-)或".SecretSauce"也有效.
4.重要的是,为了使这个最有用,需要有一些方法来将变量描述符与它们最终采用的名称进行匹配.因此,要么所有重命名变量都必须在源文件中完成,而不是在清理步骤中完成(不太理想),文档引擎必须完成一些代码解析以跟踪变量名称更改(呃!),或者某些应该使用更简单的混合,例如允许在标记文件中指定变量重命名.
如上所述,这没有多大意义.假设我需要var1和var2,创造var3和var4.也许var4只是var2它的分位数的映射,并且var3是观察方面最大的var1和var2; 或者我可能会创建var4从var2截去极值.如果我这样做,我会保留名称var2吗?另一方面,如果您指的是简单地将"长名称"与"简单名称"(即文本描述符与R变量)相匹配,那么这只是您可以做的事情.如果您有非常结构化的数据,则创建与变量名称匹配的文本名称列表并不困难; 或者,您可以创建可以执行字符串替换的标记.我认为创建一个将变量名称与描述符匹配的CSV(或者,更好的是,JSON ;-))并不难.只需继续检查所有变量是否具有匹配的描述符字符串,并在完成后停止.
5.理想情况下,报告也会被模板化(例如"我们从[日期]上的[dset]数据集中提取[var]变量."),并且可能与Sweave相关联.
这是其他人的建议roxygen和roxygen2适用的地方.
6.该工具应该足够灵活,不会过于繁琐.这意味着最小文档只是一个数据集名称.
嗯,我很难过.:)
(*)顺便说一下,如果你想要一个与此相关的FOSS项目,请查看Taverna.它已与R集成,如多个地方所述.目前这可能对您的需求有些过分,但值得研究作为一个相当成熟的工作流系统的示例.
注1:因为我经常使用bigmemory大型数据集,所以我必须命名每个矩阵的列.它们存储在每个二进制文件的描述符文件中.该过程鼓励创建将变量名称(和矩阵)与描述符匹配的描述符.如果将数据存储在数据库或支持随机访问和多个R/W访问的其他外部文件中(例如,内存映射文件,HDF5文件,除.rdat文件之外的任何文件),您可能会发现添加描述符成为第二天性.