obr*_*oil 2 r purrr tidyverse r-sf
我在几何形状为多边形类型的sf对象上进行按行操作遇到了一些麻烦。
by_row中的sf函数似乎不起作用,例如,以下代码应创建一个包含边界框对象的列表列:
purrr::by_row(sf_polygons_object, function(x) {
list(st_bbox(x))
}, .to = 'bb')
Run Code Online (Sandbox Code Playgroud)
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')
Run Code Online (Sandbox Code Playgroud)
无需黑客。只需拆分并映射函数:
st_as_sf(ne_countries()[1:5,]) %>%
mutate(bb = split(., 1:5) %>% purrr::map(st_bbox))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |