0

我想知道是否有一种简单的方法可以使用 R 中 readr 包中的 read_fwf 跳过字符。

例如,修改文档中的示例之一

library(readr)
fwf_sample <- system.file("extdata/fwf-sample.txt", package = "readr")
read_fwf(fwf_sample, fwf_widths(c(2, -3,2, 3)))

抛出错误:

Error: Begin offset (2) must be smaller than end offset (-1)

但是,使用基本的 read.fwf 函数可以正常工作:

read.fwf(fwf_sample, widths = c(2,-3,2,3))

#  V1 V2  V3
#1 12 67 890
#2 12 67 890
#3 12 67 890
#4 12 67 890
#5 12 67 890

有没有办法可以模仿这种行为readr::read_fwf?(我主要是出于性能原因感兴趣)。

4

1 回答 1

1

帮助页面建议使用fwf_positions

> read_fwf(fwf_sample, fwf_positions(c(1, 5, 8), c(2, 7, 10),  col_names=paste0("V", 1:3)) )
Parsed with column specification:
cols(
  V1 = col_character(),
  V2 = col_character(),
  V3 = col_character()
)
# A tibble: 3 x 3
     V1    V2    V3
  <chr> <chr> <chr>
1    Jo    Sm   ith
2    Ma    Ha   rtf
3    Ev    No   lan
于 2016-08-15T21:38:40.973 回答