将一组文件读入 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
解决了它。
我正在尝试将一组制表符分隔的文件读入矩阵或 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
解决了它。