【问题标题】:read.fwf does not read all lines in a fixed width filesread.fwf 不会读取固定宽度文件中的所有行
【发布时间】:2020-04-19 21:14:22
【问题描述】:

我正在尝试使用 read.fwf 命令从固定宽度文件中提取数据。但不幸的是,这段代码并没有读取所有行。它从最后一行删除几行并显示警告。该文件有 5,13,​​366 行,但仅读取 4,90,000 行。我怎样才能阅读所有的行?任何帮助将不胜感激。

library(readr)
L4 <- read.fwf("http://www.mospi.gov.in/sites/default/files/NSS75252E/R75252L04.TXT",
           c(3,
             5,
             2,
             3,
             1,
             1,
             3,
             2,
             2,
             2,
             1,
             1,
             4,
             1,
             1,
             2,
             2,
             3,
             2,
             1,
             1,
             3,
             1,
             2,
             2,
             2,
             2,
             1,
             1,
             1,
             1,
             1,
             1,
             1,
             64,
             3,
             3,
             10
             ), 
           skip=0, 
           colClasses = "character", # To convert into character
           col.names=c("a1",
                       "a2",
                       "a3",
                       "a4",
                       "a5",
                       "a6",
                       "a7",
                       "a8",
                       "a9",
                       "a10",
                       "a11",
                       "a12",
                       "a13",
                       "a14",
                       "a15",
                       "a16", # Upto now, from level 1
                       "d1",
                       "d2",
                       "d3",
                       "d4",
                       "d5",
                       "d6",
                       "d7",
                       "d8",
                       "d9",
                       "d10",
                       "d11",
                       "d12",
                       "d13",
                       "d14",
                       "d15",
                       "d16",
                       "d17",
                       "d18",
                       "d19",
                       "d20",
                       "d21",
                       "d22"
                         ),                 
           strip.white=TRUE)     

视图(L4)

【问题讨论】:

    标签: r readr


    【解决方案1】:

    我首先下载了文件,然后您的代码对我有效。我没有这样做 library(readr) 因为您似乎没有使用该软件包中的任何内容,所以为什么要包含它?

    警告:

    Warning message:
    In readLines(file, n = thisblock) :
      incomplete final line found on 'R75252L04.TXT'
    

    是因为在文件的最后一行之后没有最终的行尾标记。尽管如此,它仍然可以读取:

    > L4[513366,]
            a1    a2 a3  a4 a5 a6  a7 a8 a9 a10 a11 a12  a13 a14 a15 a16 d1  d2 d3
    513366 005 17927 75 252  1  2 362 31 31  03   4   1 3613   1   4  02 04 000 04
           d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21
    513366  7  2 62  2 01 01               2   2   2       2           2   4
               d22
    513366 1004499
    

    我总共阅读了所有的行:

    > dim(L4)
    [1] 513366     38
    

    尝试使用download.file 获取文件并从中读取文件,而不是从 URL 中读取。虽然当我尝试从http URL 阅读时它对我有用。您是像我一样检查使用dim 读取的行数还是View 向您显示的内容?

    【讨论】:

    • 感谢您的快速回复。我使用了dim(L4),它也显示了 4,90,000 行。但是使用download.file 获取文件并从下载的文件中读取有助于我读取所有行。虽然这仍然显示警告消息,但它工作得很好。比你。
    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2017-05-19
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多