我试图将一组选项卡分隔的文件读取到矩阵或数据中。框架对于每个文件,我需要提取一列,然后将所有列连接到一个矩阵中,保持列和行的名称。
我正在使用tidyverse(我在这方面很糟糕)。我成功地获得了列名,但在处理的最后一个阶段,我错过了行名。
library("purrr")
library("tibble")
samples <- c("a","b","c","d")
a <- samples %>%
purrr::map_chr(~ file.path(getwd(), TARGET_FOLDER, paste(., "tsv", sep = "."))) %>%
purrr::map(safely(~ read.table(., row.names = 1, skip = 4))) %>%
purrr::set_names(rownames(samples)) %>%
purrr::transpose()
is_ok <- a$error %>% purrr::map_lgl(is_null)
x <- a$result[is_ok] %>%
purrr::map(~ {
v <- .[,1]
names(v) <- rownames(.)
v
}) %>% as_tibble(rownames = NA)
这个
x
数据框架具有正确的列名,但缺少行名。上的所有元素
a
列表按完全相同的顺序具有相同的行名。我知道这样的把戏
rownames(x) <- rownames(a$result[[1]])
但我正在寻找更一致的解决方案。