代码之家  ›  专栏  ›  技术社区  ›  ftabaro

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

  •  0
  • ftabaro  · 技术社区  · 8 年前

    我试图将一组选项卡分隔的文件读取到矩阵或数据中。框架对于每个文件,我需要提取一列,然后将所有列连接到一个矩阵中,保持列和行的名称。 我正在使用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]]) 但我正在寻找更一致的解决方案。

    1 回复  |  直到 8 年前
        1
  •  0
  •   ftabaro    8 年前

    结果证明,解决方案比预期的要简单。使用 as.data.frame 而不是最后一个 as_tibble 解决了它。