如何将一个具有关系(如a-1、a-2、a-3、B-2、B-4、B-5等)的成对数据文件解析为R中类似字典的结构

如何将一个具有关系(如a-1、a-2、a-3、B-2、B-4、B-5等)的成对数据文件解析为R中类似字典的结构,r,list,dictionary,parsing,hashmap,R,List,Dictionary,Parsing,Hashmap,我是一名ruby开发人员,但我需要开发我在R的最终工作学位的一部分。我正在阅读这样一个文件: genes = read.delim(opt$pregeneset) gvr_data = {"chr15.gvr7.17": [114791, 283767, 100996331, 390538, 283694], "chr15.gvr8.16": [123606, 81614, 23191], "chr15.gvr9.15": [283685, 7681]} 其内容如下:

我是一名ruby开发人员,但我需要开发我在R的最终工作学位的一部分。我正在阅读这样一个文件:

genes = read.delim(opt$pregeneset)
gvr_data = {"chr15.gvr7.17": [114791, 283767, 100996331, 390538, 283694],
 "chr15.gvr8.16": [123606, 81614, 23191], 
 "chr15.gvr9.15": [283685, 7681]}
其内容如下:

              GVR    ENTREZ
1   chr15.gvr7.17    114791
2   chr15.gvr7.17    283767
3   chr15.gvr7.17 100996331
4   chr15.gvr7.17    390538
5   chr15.gvr7.17    283694
6   chr15.gvr8.16    123606
7   chr15.gvr8.16     81614
8   chr15.gvr8.16     23191
9   chr15.gvr9.15    283685
10  chr15.gvr9.15      7681
我想将这些数据转换成某种字典结构,如下所示:

genes = read.delim(opt$pregeneset)
gvr_data = {"chr15.gvr7.17": [114791, 283767, 100996331, 390538, 283694],
 "chr15.gvr8.16": [123606, 81614, 23191], 
 "chr15.gvr9.15": [283685, 7681]}
等等。通常我会在GVR上迭代,将I项保存为键,并将ENTREZ中的同一I项推送到一个数组中,作为前面显示的用于生成字典/哈希映射的值,但我不知道如何在R中执行此操作。

您想要一个命名列表,您可以这样得到它:

genes = read.delim(opt$pregeneset)
gvr_data = {"chr15.gvr7.17": [114791, 283767, 100996331, 390538, 283694],
 "chr15.gvr8.16": [123606, 81614, 23191], 
 "chr15.gvr9.15": [283685, 7681]}
结果$`chr15.gvr7.17` > [1] 114791 283767 100996331 390538 283694 > >$chr15.gvr8.16 > [1] 123606 81614 23191 > >$chr15.gvr9.15 > [1] 283685 7681 现在,您可以使用$operator访问任何单个向量,如下所示:

genes = read.delim(opt$pregeneset)
gvr_data = {"chr15.gvr7.17": [114791, 283767, 100996331, 390538, 283694],
 "chr15.gvr8.16": [123606, 81614, 23191], 
 "chr15.gvr9.15": [283685, 7681]}
结果$chr15.gvr9.15 > [1] 283685 7681
这里有两种以R为基数的输出,也许其中一种就是你想要的

解决方案1:输出为数据帧 解决方案2:输出为列表
已经有一个公认的答案,但这里有另一个,可能更像发布的预期结果

aggregate(ENTREZ ~ GVR, genes, function(x){
  x <- paste(x, collapse = ', ')
  paste0('[', x, ']')
})
#            GVR                                      ENTREZ
#1 chr15.gvr7.17 [114791, 283767, 100996331, 390538, 283694]
#2 chr15.gvr8.16                      [123606, 81614, 23191]
#3 chr15.gvr9.15                              [283685, 7681]
或JSON格式

agg <- aggregate(ENTREZ ~ GVR, genes, paste)
jsonlite::toJSON(agg, "values", pretty = TRUE)
#[
#  ["chr15.gvr7.17", ["114791", "283767", "100996331", "390538", "283694"]],
#  ["chr15.gvr8.16", ["123606", "81614", "23191"]],
#  ["chr15.gvr9.15", ["283685", "7681"]]
#] 
数据


试试splitgenes,genes$GVR谢谢你!这对我来说非常有效,因为我需要以一种稍后可以循环的方式来存储它,以便将函数应用于每个向量。