【发布时间】:2018-05-14 14:34:01
【问题描述】:
我已经导入了一个data.frames列表in1
in1 <- file_paths [1:3] %>%
set_names(basename(.) %>%
gsub("_R1_001.bg.gz.bismark.cov.gz", "", .) %>%
gsub("CpG_", "", .)) %>%
map(readr::read_tsv, n_max = 3,
col_names = c("chr", "start", "end", "score", "ref", "alt"))
in1 的一个小例子(文件少,行数少)如下所示:
$`OB_0120-53T_S26`
# A tibble: 3 x 6
chr start end score ref alt
<chr> <int> <int> <int> <int> <int>
1 chr1 19190 19190 100 1 0
2 chr1 19249 19249 100 1 0
3 chr1 19274 19274 100 1 0
$`OB_0120-55T_S25`
# A tibble: 3 x 6
chr start end score ref alt
<chr> <int> <int> <int> <int> <int>
1 chr1 17479 17479 100 2 0
2 chr1 17484 17484 100 2 0
3 chr1 17493 17493 100 2 0
$`OB_0120-56T_S36`
# A tibble: 3 x 6
chr start end score ref alt
<chr> <int> <int> <int> <int> <int>
1 chr1 17479 17479 100 1 0
2 chr1 17484 17484 100 1 0
3 chr1 17493 17493 100 1 0
我的目标是将它们加入一个更大的 data.frame,例如。
%>% reduce(full_join, by= c("chr", "start", "end"))
不过,首先我想将每个元素的列表名称附加到“score”、“ref”和“alt”列名。
所以想要的第一个元素应该是这样的......
$`OB_0120-53T_S26`
# A tibble: 3 x 6
chr start end OB_0120-53T_S26.score OB_0120-53T_S26.ref OB_0120-53T_S26.alt
<chr> <int> <int> <int> <int> <int>
1 chr1 19190 19190 100 1 0
2 chr1 19249 19249 100 1 0
3 chr1 19274 19274 100 1 0
我尝试过使用set_names,但我不知道如何获取列表元素的单数名称我正在获取名称的整个向量因此这是错误的。
in1 %>% map(set_names, c("chr", "start", "end", paste0(names(.), c(".score", ".ref", ".alt"))))
$`OB_0120-53T_S26`
# A tibble: 3 x 6
chr start end `OB_0120-53T_S26.score` `OB_0120-55T_S25.ref` `OB_0120-56T_S36.alt`
<chr> <int> <int> <int> <int> <int>
1 chr1 19190 19190 100 1 0
2 chr1 19249 19249 100 1 0
3 chr1 19274 19274 100 1 0
有什么想法吗?
【问题讨论】:
-
很抱歉,在此困惑了 2 小时后,我在发布后几分钟找到了解决方案(如下)......