0

I am trying to read a set of tab separated files into a matrix or data.frame. For each file I need to extract one column and then concatenate all the columns into a single matrix keeping both column and row names. I am using tidyverse (and I am terrible at that). I successfully get column names but I miss row names at the very last stage of processing.

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)

The x data.frame has correct colnames but lacks rownames. All the element on the a list have the same rownames in the exact same order. I am aware of tricks like rownames(x) <- rownames(a$result[[1]]) but I am looking for more consistent solutions.

ftabaro
  • 136
  • 11

1 Answers1

0

It turned out that the solution was easier than expected. Using as.data.frame instead the last as_tibble solved it.

ftabaro
  • 136
  • 11