我在对 sf 对象进行逐行操作时遇到了一些麻烦,其中几何是多边形类型。
by_row 中的 sf 函数似乎不起作用,例如以下应该创建一个包含边界框对象的列表列:
purrr::by_row(sf_polygons_object, function(x) {
list(st_bbox(x))
}, .to = 'bb')
UseMethod(“st_bbox”)中的错误:没有适用于“st_bbox”的适用方法应用于类“c('tbl_df','data.frame')”的对象
(本身不是最有用的例子,但演示了问题)。
我尝试了一些替代方法,例如rowwise() %>% mutate()
, mutate( x = apply(., 1, function(x) ...))
,但都没有,因为它们没有为 st_bbox() 提供它需要的 sf 对象。这是一个错误,还是我处理得不好?
编辑:可重现的例子
library(sp)
library(rgdal)
library(rgeos)
library(sf)
library(tidyverse)
library(rnaturalearth)
nec <- st_as_sf(ne_countries()[1:5,]) %>%
purrr::by_row(., function(x) st_bbox(x), .to = 'bb')