r - 将列表名称附加到 data.frames 的列中
问题描述
我已经导入了一个 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
有任何想法吗?
解决方案
...实际上这有效
in1 %>%
map2( ., names(.),
~set_names(.x, c("chr", "start", "end", paste0(.y, c(".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
$`OB_0120-55T_S25`
# A tibble: 3 x 6
chr start end `OB_0120-55T_S25.score` `OB_0120-55T_S25.ref` `OB_0120-55T_S25.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
推荐阅读
- google-contacts-api - 访问公共数据时,Google URL 缩短 API 出现 403 禁止错误
- mapbox-gl-js - Maki 图标未全部显示
- json - 使用 SQL 或任何其他方式查询 JSON 数据文件,以从大型 json 数据集中过滤掉基于 key 的特定数据
- javascript - 将字符串形式的数组转换为JS中的实际数组
- java - Java SDK 2.11.0 上的数据流作业无法扩展
- python - 为什么我的 if 语句不适用于长度 > 1?
- r - gVisOrgChart 不显示子节点
- javascript - 创建对象而不是数组(JS)
- google-chrome-extension - 谷歌 chrome 发布测试扩展“在浏览器访问错误时安装”
- c# - 如何修复错误 - 注入 DbContext 时无法访问 ASP.NET Core 中的已处置对象