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

时间:2018-04-14 07:31:55

标签: r purrr tibble

我正在尝试将一组制表符分隔的文件读入矩阵或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具有正确的colnames但缺少rownames。 a列表中的所有元素都具有完全相同顺序的相同rownames。我知道像rownames(x) <- rownames(a$result[[1]])这样的技巧,但我正在寻找更一致的解决方案。

1 个答案:

答案 0 :(得分:0)

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