jonkeane commented on a change in pull request #10601:
URL: https://github.com/apache/arrow/pull/10601#discussion_r658857664
##########
File path: r/tests/testthat/test-metadata.R
##########
@@ -205,3 +205,47 @@ test_that("metadata of list elements (ARROW-10386)", {
expect_identical(attr(as.data.frame(tab)$x[[1]], "foo"), "bar")
expect_identical(attr(as.data.frame(tab)$x[[2]], "baz"), "qux")
})
+
+test_that("list types roundtrip", {
+ # first an unnamed, nested list
+ df <- tibble::tibble(
+ list = list(
+ list(c("one", "one"), c("two", "two")),
+ list(c("three", "three"), c("four", "four")),
+ list(c("five", "five"), c("six", "six"))
+ )
+ )
+ rb <- record_batch(df)
+ expect_identical(dim(rb), dim(df))
+ expect_equal(rb$schema$list$type, list_of(list_of(string())))
+ # as.data.frame(rb) adds arrow_list + vctrs classes, so we only check
equivalence
+ expect_equivalent(as.data.frame(rb), df)
+
+ # Now, a named list
+ df <- tibble::tibble(
+ named_list = list(
+ list(a = c("one", "one"), b = c("two", "two")),
+ list(a = c("three", "three"), b = c("four", "four")),
+ list(a = c("five", "five"), b = c("six", "six"))
+ )
+ )
+ rb <- record_batch(df)
+ expect_identical(dim(rb), dim(df))
+ expect_equal(rb$schema$named_list$type, list_of(struct(a = string(), b =
string())))
+ expect_identical(as.data.frame(rb), df)
+
+ skip("These are not yet supported, ")
Review comment:
I need to do more with this to support this. It converts ok, but it
doesn't roundtrip correctly. In the conversion to record batches here, the
named list of named lists gets turned into a 2 row, 1 column data frame (where
each cell has three structs named "one_row", "two_row", "three_row"). When in
fact what we want here is a 3 row, 1 column data frame (where each cell has two
structs named "a" and "b").
--
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]