@@ -41,26 +41,24 @@ as_nanoarrow_vctr <- function(x, ..., schema = NULL) {
4141
4242# ' @rdname as_nanoarrow_vctr
4343# ' @export
44- nanoarrow_vctr <- function (schema = NULL ) {
44+ nanoarrow_vctr <- function (schema = NULL , subclass = character () ) {
4545 if (is.null(schema )) {
46- new_nanoarrow_vctr(list (), NULL )
46+ new_nanoarrow_vctr(list (), NULL , subclass )
4747 } else {
48- new_nanoarrow_vctr(list (), as_nanoarrow_schema(schema ))
48+ new_nanoarrow_vctr(list (), as_nanoarrow_schema(schema ), subclass )
4949 }
5050}
5151
52- new_nanoarrow_vctr <- function (chunks , schema , indices = NULL ) {
52+ new_nanoarrow_vctr <- function (chunks , schema , subclass = character () ) {
5353 offsets <- .Call(nanoarrow_c_vctr_chunk_offsets , chunks )
54- if (is.null(indices )) {
55- indices <- seq_len(offsets [length(offsets )])
56- }
54+ indices <- seq_len(offsets [length(offsets )])
5755
5856 structure(
5957 indices ,
6058 schema = schema ,
6159 chunks = chunks ,
6260 offsets = offsets ,
63- class = " nanoarrow_vctr"
61+ class = union( subclass , " nanoarrow_vctr" )
6462 )
6563}
6664
@@ -248,12 +246,12 @@ as.data.frame.nanoarrow_vctr <- function(x, ..., optional = FALSE) {
248246print.nanoarrow_vctr <- function (x , ... ) {
249247 schema <- attr(x , " schema" , exact = TRUE )
250248 if (is.null(schema )) {
251- cat(" <nanoarrow_vctr <any>>\n " )
249+ cat(sprintf( " <%s <any>>\n " , class( x )[ 1 ]) )
252250 return (invisible (x ))
253251 }
254252
255253 formatted <- nanoarrow_schema_formatted(schema , recursive = FALSE )
256- cat(sprintf(" <nanoarrow_vctr %s[%d]>\n " , formatted , length(x )))
254+ cat(sprintf(" <%s %s[%d]>\n " , class( x )[ 1 ] , formatted , length(x )))
257255
258256 n_values <- min(length(x ), 20 )
259257 more_values <- length(x ) - n_values
@@ -274,12 +272,12 @@ print.nanoarrow_vctr <- function(x, ...) {
274272str.nanoarrow_vctr <- function (object , ... ) {
275273 schema <- attr(object , " schema" , exact = TRUE )
276274 if (is.null(schema )) {
277- cat(" <nanoarrow_vctr <any>>\n " )
275+ cat(sprintf( " <%s <any>>\n " , class( object )[ 1 ]) )
278276 return (invisible (object ))
279277 }
280278
281279 formatted <- nanoarrow_schema_formatted(schema , recursive = FALSE )
282- cat(sprintf(" <nanoarrow_vctr %s[%d]>\n " , formatted , length(object )))
280+ cat(sprintf(" <%s %s[%d]>\n " , class( object )[ 1 ] , formatted , length(object )))
283281
284282 # Prints out the C data interface dump of each chunk with the chunk
285283 # index above.
0 commit comments