【问题标题】:R read matrix of integer values automaticallyR自动读取整数值矩阵
【发布时间】:2015-07-20 21:56:55
【问题描述】:

我想从制表符分隔的整数文本文件中读取一个矩阵(所有值,无空列或空列)并自动命名列(基于第一行中的标题) :

a   b   c
9   2   3
2   9   6
3   2   4
5   3   3

我已经尝试了 read.csv()、read.table() 和 scan() 方法并读取了文件,但我想要的是:

1- 自动识别列名(不用提 一一命名)。

2- 我可以将它们视为整数矩阵;运行 rcorr(data)quantile(data$a, 0.9) 而不是 rcorr(as.matrix(data))分位数(as.matrix(data$a), 0.9) 随时。

关于最简单(但有效)的方法有什么想法吗?

【问题讨论】:

  • 对于使用 read.table 的大问题是什么,然后将其强制转换为矩阵...?
  • txt <- "a\tb\tc\n9\t2\t3\n2\t9\t6\n3\t2\t4\n5\t3\t3" 是您的数据(请参阅 cat(txt) )-as.matrix(read.table(text=txt,sep="\t",header=TRUE)) 可以正常工作并为您提供所需的一切。
  • @thelatemail:你是对的。谢谢你。我刚刚发现了标题标题中的特殊字符(#)的问题。
  • @joran,谢谢。请参阅其他评论。

标签: r matrix import


【解决方案1】:

read.table怎么样?

read.table(text="a b c
                 9 2 3
                 2 9 6
                 3 2 4
                 5 3 3", header=TRUE)

>      a b c
     1 9 2 3
     2 2 9 6
     3 3 2 4
     4 5 3 3

它还有输入文件、声明分隔符等选项。见help(read.table)

【讨论】:

  • 我正在读取文件。无论如何, data
  • @Alisa 您可以尝试使用row.names = 1 或其他值,具体取决于您的实际数据是什么样的
  • @Alisa 那么您只是没有正确指定所有参数。你可以试试sep = "\t"
  • @Alisa 您的 csv 文件中的数据是否与您发布的数据不同?
  • @N8TRO:是的,标题中有一个我认为不重要的特殊字符!谢谢。
【解决方案2】:
data <-- as.matrix(read.table("c:\\temp\\inFile.tsv", header=TRUE))

请注意,当标题行中有特殊字符 (#) 时,我收到以下错误:

read.table("...") 中的错误:列多于列名

因此标题行中不应有特殊字符。它还会自动检测分隔符(“\t”)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多