Dewey Dunnington created ARROW-16266: ----------------------------------------
Summary: [R] Add StructArray$create() Key: ARROW-16266 URL: https://issues.apache.org/jira/browse/ARROW-16266 Project: Apache Arrow Issue Type: Improvement Components: R Reporter: Dewey Dunnington In ARROW-13371 we implemented the {{make_struct}} compute function bound to {{data.frame()}} / {{tibble()}} in dplyr evaluation; however, we didn't actually implement {{StructArray$create()}}. In ARROW-15168, it turns out that we need to do this to support {{StructArray}} creation from data.frames whose columns aren't all convertable using the internal C++ conversion. The hack used in that PR is below (but we should clearly implement the C++ function instead of using the hack): {code:R} library(arrow, warn.conflicts = FALSE) struct_array <- function(...) { batch <- record_batch(...) array_ptr <- arrow:::allocate_arrow_array() schema_ptr <- arrow:::allocate_arrow_schema() batch$export_to_c(array_ptr, schema_ptr) Array$import_from_c(array_ptr, schema_ptr) } struct_array(a = 1, b = "two") #> StructArray #> <struct<a: double, b: string>> #> -- is_valid: all not null #> -- child 0 type: double #> [ #> 1 #> ] #> -- child 1 type: string #> [ #> "two" #> ] {code} -- This message was sent by Atlassian Jira (v8.20.7#820007)