【问题标题】:R read file which contains column with 001000 valuesR读取文件,其中包含具有001000值的列
【发布时间】:2011-06-23 13:49:07
【问题描述】:

我想读取一个包含 2 列的文件。

2 00001
9 00001
3 00001
12 00001
115 00001
11 00001
12 00001
38 00001

如果我使用标准的read.table,我会得到类似的结果:

   V1 V2
1   2  1
2   9  1
3   3  1
4  12  1
5 115  1
6  11  1

您对我如何阅读此文件并保持第二列保持原样有任何想法吗? 谢谢

【问题讨论】:

    标签: file r dataframe


    【解决方案1】:

    阅读read.table() 的文档并了解如何选择列类型。您希望第二列作为字符。

    【讨论】:

      【解决方案2】:

      看起来您可以传递一个参数 as.is 来更改 read.table 是尝试将字符串解析为值,还是将它们保留为原始字符串。

      as.is read.table 的默认行为是将字符变量(未转换为逻辑、数字或复数)转换为因子。变量 as.is 控制这种转换。它的值要么是一个逻辑向量(如果需要,值会被回收),或者是一个数字或字符索引的向量,它们指定哪些列不应转换为因子。

      注意:要禁止所有转换,包括数字列的转换,请设置 colClasses = "character"。

      http://stuff.mit.edu/afs/sipb/project/r-project/arch/i386_rhel3/lib/R/library/base/html/read.table.html

      【讨论】:

        【解决方案3】:

        我对文档感到困惑,这就是我问的原因;) 设法找到它:

         read.table("file.txt", colClasses=c("character"))
        

        【讨论】:

        • 如果您希望第一个 col 是数字,那么: read.table("file.txt", colClasses=c("numeric", "character") )
        【解决方案4】:

        总的来说,我会接受 Dirk 的回答。但也许一个小笔记可以帮助那些偶然发现这个线程的人,看看如何处理不那么常见的数据格式。 还可以查看utils 包中的read.fwf。如果您存储的数据没有像某些旧数据库中那样的分隔符,那就太好了。

        话虽如此,在您的特定情况下,我可能会选择 read.table。

        【讨论】:

          猜你喜欢
          • 2015-01-21
          • 2019-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多