hypertidy / silicate

A general form for complex data
https://hypertidy.github.io/silicate/
53 stars 4 forks source link

deal with unclassed sfc list #109

Closed mdsumner closed 4 years ago

mdsumner commented 4 years ago

silicate::minimal_mesh[1, ] is a sf data frame, but

silicate::minimal_mesh[1, ]$geom is a list.

x <- silicate::minimal_mesh

silicate::PATH(x)
silicate::PATH0(x)
silicate::SC(x)
silicate::SC0(x)
silicate::TRI(x)
silicate::TRI0(x)
silicate::ARC(x)
anglr::DEL(x)

## all fine

silicate::sc_coord(x)
silicate::sc_vertex(x)
silicate::sc_path(x)
silicate::sc_edge(x)
silicate::sc_arc(x)
silicate::sc_node(x)
silicate::sc_segment(x)

## these are different (no sf catch)
#silicate::sc_end(x)
#silicate::sc_start(x)

##OK
silicate::sc_object(x)

silicate::PATH(x[1, ])
silicate::PATH0(x[1, ])
silicate::SC(x[1, ])
silicate::SC0(x[1, ])
silicate::TRI(x[1, ])
silicate::TRI0(x[1, ])
silicate::ARC(x[1, ])
anglr::DEL(x[1, ])

## all fail yet class(x[1, ]) is c("sf", "data.frame")
silicate::sc_coord(x[1, ])
silicate::sc_vertex(x[1, ])
silicate::sc_path(x[1, ])
silicate::sc_edge(x[1, ])
silicate::sc_arc(x[1, ])
silicate::sc_node(x[1, ])
silicate::sc_segment(x[1, ])

## these are different (no sf catch)
silicate::sc_end(x[1, ])
silicate::sc_start(x[1, ])

##OK
silicate::sc_object(x[1, ])
mdsumner commented 4 years ago

so sc_coord and sc_path were failing in the default method, added .list methods for each.