【问题标题】:How to read a matrix into R using tidyverse tools?如何使用 tidyverse 工具将矩阵读入 R?
【发布时间】:2021-02-11 21:38:07
【问题描述】:

你能帮帮我吗?

我经常需要将 发病矩阵 (AxB) 读入格式化为 TXT 文件的R。它们看起来像这样:

matrix <- matrix(round(runif(50, 0, 100),0), 5, 10)

我通常的解决方案涉及base的read.delimas.matrix

as.matrix(read.delim("matrix.txt", row.names = 1))

文件被读取并转换为matrix类,因此可以进行适当的分析。

但是,我希望也能够使用 tidyverse 的 read_delim 读取矩阵文件,因此对于大型矩阵或大量矩阵的读取过程可以更快。我试过这个:

as.matrix(read_delim("matrix.txt", delim = "/t"))

但是数据以一种非常奇怪的格式被打乱,信息丢失了。有没有办法使用 tidyverse 工具阅读和处理发病率matrices

谢谢!

【问题讨论】:

    标签: r matrix tidyverse tibble readr


    【解决方案1】:

    在 R 中,您需要使用反斜杠来表示特殊字符和转义字符。

    试试

    as.matrix(read_delim("matrix.txt", delim = "\t"))
    

    read_delim 函数没有 row.names 选项,因此您必须转换数据以将行名作为行名(而不是第一列)。您应该在转换为矩阵之前执行此操作。

    library(tidyverse)
    matrix <- read_delim("matrix.txt", delim = "\t") %>%
      column_to_rownames(first_column) %>%
      as.matrix()
    

    【讨论】:

    • 非常感谢!它工作得很好。尽管如此,还是有些奇怪。我使用微基准测试了 read.delim 和 read_delim 这两种解决方案,而 tidyverse 的评估速度要慢得多。不应该反过来吗?
    【解决方案2】:

    试试这个

    as.matrix(read_delim("matrix.txt", delim = "\t", col_names = F))
    

    【讨论】:

    • 感谢您的帮助!当 col_names = T 时,结果看起来更接近矩阵格式。
    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多