marberts opened a new issue, #54682:
URL: https://github.com/apache/arrow/issues/54682
### Describe the bug, including details regarding any error messages,
version, and platform.
`?Schema` says the following about metadata and list columns.
>When converting a data.frame to an Arrow Table or RecordBatch, attributes
from the data.frame are saved alongside tables so that the object can be
reconstructed faithfully in R (e.g. with as.data.frame()). This metadata can be
both at the top-level of the data.frame (e.g. attributes(df)) or at the column
(e.g. attributes(df$col_a)) or for list columns only: element level (e.g.
attributes(df[1, "col_a"])).
Here's an example showing that top-level attributes for a data frame and
attributes for individual columns are preserved, but not for elements of a list
column.
``` r
x <- structure(1:2, comment = "test")
test_df <- list(
x1 = x,
x2 = list(1, x)
) |>
list2DF() |>
structure(comment = "test")
attributes(test_df[1, "x2"]) <- list(comment = "TEST")
str(test_df)
#> 'data.frame': 2 obs. of 2 variables:
#> $ x1: int 1 2
#> ..- attr(*, "comment")= chr "test"
#> $ x2:List of 2
#> ..$ : num 1
#> ..$ : int 1 2
#> .. ..- attr(*, "comment")= chr "test"
#> - attr(*, "comment")= chr "test"
arrow_table <- arrow::as_arrow_table(test_df)
arrow_table$metadata
#> $r
#> $r$attributes
#> $r$attributes$comment
#> [1] "test"
#>
#>
#> $r$columns
#> $r$columns$x1
#> $r$columns$x1$attributes
#> $r$columns$x1$attributes$comment
#> [1] "test"
#>
#>
#> $r$columns$x1$columns
#> NULL
#>
#>
#> $r$columns$x2
#> NULL
str(as.data.frame(arrow_table))
#> 'data.frame': 2 obs. of 2 variables:
#> $ x1: int 1 2
#> ..- attr(*, "comment")= chr "test"
#> $ x2: list<double> [1:2]
#> ..$ : num 1
#> ..$ : num 1 2
#> ..@ ptype: num
#> - attr(*, "comment")= chr "test"
```
<sup>Created on 2026-10-19 with [reprex
v2.1.1](https://reprex.tidyverse.org)</sup>
I ran into this issue when trying to write a data frame with a list column
of named vector with `arrow::write_parquet()` and losing the vector names.
This seems to be related to #42220 and #51695.
```r
> sessionInfo()
R version 4.6.1 (2026-06-24)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.5 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0 LAPACK version
3.12.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=C
time zone: America/Toronto
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 xfun_0.57
magrittr_2.0.5
[6] glue_1.8.1 tibble_3.3.1 knitr_1.51 pkgconfig_2.0.3
htmltools_0.5.9
[11] rmarkdown_2.31 lifecycle_1.0.5 ps_1.9.3 cli_3.6.6
processx_3.9.0
[16] callr_3.7.6 vctrs_0.7.3 reprex_2.1.1 withr_3.0.2
compiler_4.6.1
[21] rstudioapi_0.18.0 tools_4.6.1 clipr_0.8.0 pillar_1.11.1
evaluate_1.0.5
[26] yaml_2.3.12 otel_0.2.0 rlang_1.2.0 fs_2.1.0
```
### Component(s)
R
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]