将一组文件读入 R 中的矩阵

Read a set of files into a matrix in R

我正在尝试将一组制表符分隔的文件读入矩阵或 data.frame。对于每个文件,我需要提取一列,然后将所有列连接成一个矩阵,同时保留列名和行名。 我正在使用 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 data.frame 具有正确的列名,但缺少行名。 a 列表中的所有元素都以完全相同的顺序具有相同的行名。我知道像 rownames(x) <- rownames(a$result[[1]]) 这样的技巧,但我正在寻找更一致的解决方案。

事实证明,解决方案比预期的要容易。使用 as.data.frame 而不是最后一个 as_tibble 解决了它。