I’m not sure how I originally managed to do this, but somehow when I have an integer duration in a tibble, vec_rbind errors.
library(lubridate)
df <- tibble::tibble(
# I used dput on the original data.frame to get to this code
duration = methods::new(
"Duration",
.Data = c(
7200L
)
)
)
vctrs::vec_rbind(df, df)
Error in `vctrs::vec_rbind()`:
! `proxy` of type `double` incompatible with `value` proxy of type `integer`.
ℹ In file 'slice-assign.c' at line 254.
ℹ This is an internal error that was detected in the vctrs package.
Please report it at <https://github.com/r-lib/vctrs/issues> with a reprex (<https://tidyverse.org/help/>) and the full backtrace.
When I tried to reproduce this with a fresh lubridate object, it always saves the duration as a double, at which point the problem disappears:
df <- tibble::tibble(
duration = methods::new(
"Duration",
.Data = c(
7200
)
)
)
vctrs::vec_rbind(df, df)
# A tibble: 2 × 1
duration
<Duration>
1 7200s (~2 hours)
2 7200s (~2 hours)
Details
R version 4.5.2 (2025-10-31)
Platform: x86_64-pc-linux-gnu
Running under: EndeavourOS
Matrix products: default
BLAS: /usr/lib/libblas.so.3.12.0
LAPACK: /usr/lib/liblapack.so.3.12.0 LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=de_DE.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=de_DE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
time zone: Europe/Berlin
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lubridate_1.9.5
loaded via a namespace (and not attached):
[1] digest_0.6.39 fastmap_1.2.0 xfun_0.55 winch_0.1.2
[5] magrittr_2.0.4 glue_1.8.0 tibble_3.3.1 knitr_1.51
[9] pkgconfig_2.0.3 htmltools_0.5.9 timechange_0.4.0 rmarkdown_2.30
[13] generics_0.1.4 lifecycle_1.0.5 cli_3.6.5 vctrs_0.7.1.9000
[17] compiler_4.5.2 tools_4.5.2 pillar_1.11.1 evaluate_1.0.5
[21] yaml_2.3.12 otel_0.2.0 rlang_1.1.7 jsonlite_2.0.0
I’m not sure how I originally managed to do this, but somehow when I have an integer duration in a
tibble,vec_rbinderrors.When I tried to reproduce this with a fresh
lubridateobject, it always saves the duration as a double, at which point the problem disappears:Details