如何将一个具有关系(如a-1、a-2、a-3、B-2、B-4、B-5等)的成对数据文件解析为R中类似字典的结构
我是一名ruby开发人员,但我需要开发我在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]} 其内容如下:
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谢谢你!这对我来说非常有效,因为我需要以一种稍后可以循环的方式来存储它,以便将函数应用于每个向量。