tidyverse / vroom

Fast reading of delimited files
https://vroom.r-lib.org
Other
622 stars 60 forks source link

Incorrect problem rows displayed by `problems()` when printing before calling #535

Open khusmann opened 5 months ago

khusmann commented 5 months ago

(Running vroom 1.6.5 & readr 2.1.5 on Ubuntu)

When I call problems() after printing in this example, I get 2 problems flagged, instead of 1. The first doesn't look right ("z" is not on row 2):

library(vroom)

foo <- vroom(
  I("a\n1\n2\nz\n"),
  delim = ",",
  col_types=cols(a = col_double())
)

print(foo)
#> Warning: One or more parsing issues, call `problems()` on your data frame for details,
#> e.g.:
#>   dat <- vroom(...)
#>   problems(dat)
#> # A tibble: 3 × 1
#>       a
#>   <dbl>
#> 1     1
#> 2     2
#> 3    NA

problems(foo)
#> # A tibble: 2 × 5
#>     row   col expected actual file                              
#>   <int> <int> <chr>    <chr>  <chr>                             
#> 1     2     1 a double z      /tmp/RtmpUAw9hE/file1d28ab72074760
#> 2     4     1 a double z      /tmp/RtmpUAw9hE/file1d28ab72074760

If I do not call print(), problems() works just fine:

library(vroom)

foo <- vroom(
  I("a\n1\n2\nz\n"),
  delim = ",",
  col_types=cols(a = col_double())
)

problems(foo)
#> Warning: One or more parsing issues, call `problems()` on your data frame for details,
#> e.g.:
#>   dat <- vroom(...)
#>   problems(dat)
#> # A tibble: 1 × 5
#>     row   col expected actual file                              
#>   <int> <int> <chr>    <chr>  <chr>                             
#> 1     4     1 a double z      /tmp/RtmpfGW535/file1d2950234b269b