我对R相当陌生,最近一直在使用 data.table 进行一个涉及大型数据集(特别是基因组数据)操作的项目。其中一列是染色体编号/名称,格式为“chr_”,其中 _ 为 1-22、X 或 Y。由于数据按染色体位置排序,因此这是我的数据的自然主键. 但是,将此设置为键会产生不需要的结果,即按字典顺序而不是一般数字顺序排序(即顺序是 1,10,11,...,19,2,20,...,X,Y 而不是大于 1,2,...,9,10,11,...,19,20,...,X,Y)。我查看了 factor() 函数的文档,其中包括一个 option ordered
,它按顺序隐式读取因子级别。但是,我不知道指定染色体列应该是有序因子,因为唯一相关的选项是 stringsAsFactors(这会将所有字符串转换为因子,考虑到其他列中非唯一字符串的数量,这将非常低效)和 colClasses,我不知道任何转换方法列隐式排序的因素。
有谁知道 fread() 的隐式排序因子的实现,或者 data.table 将字符列转换为有序因子的任何有效方法?
笔记:
我主要在寻找最有效的实现,最好是在读取过程中直接将列转换为有序因子的实现。