gpt4 book ai didi

r - 从两列矩阵创建SF对象

转载 作者:行者123 更新时间:2023-12-04 11:01:04 25 4
gpt4 key购买 nike

我有一个简单的两列矩阵,我想将其转换为sf对象,其中每一行都指定一个点:

> set.seed(123);m=matrix(runif(10),ncol=2)
> m
[,1] [,2]
[1,] 0.2875775 0.0455565
[2,] 0.7883051 0.5281055
[3,] 0.4089769 0.8924190
[4,] 0.8830174 0.5514350
[5,] 0.9404673 0.4566147

最幼稚的方法行不通,因为 apply将点混回到一个矩阵中,并且该操作变成了一个非常慢的转置函数:
> apply(m,1,st_point)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
[2,] 0.0455565 0.5281055 0.8924190 0.5514350 0.4566147

这个怪物我能做的最好的事情就是不做任何显式的循环:
> st_sfc(lapply(data.frame(t(m)),st_point))
Geometry set for 5 features
geometry type: POINT
dimension: XY
bbox: xmin: 0.2875775 ymin: 0.0455565 xmax: 0.9404673 ymax: 0.892419
epsg (SRID): NA
proj4string: NA
POINT(0.287577520124614 0.0455564993899316)
POINT(0.788305135443807 0.528105488047004)
POINT(0.4089769218117 0.892419044394046)
POINT(0.883017404004931 0.551435014465824)
POINT(0.940467284293845 0.456614735303447)

另一个选择是通过 sp对象,但是我不想这样做。我也只想在R的基础上解决方案,所以不转换为data.table或tbl等。

我是否只是缺少一个简单的 as(m,"sf")函数或类似函数?

最佳答案

按照sf docs

m %>% 
as.data.frame %>%
sf::st_as_sf(coords = c(1,2))

关于r - 从两列矩阵创建SF对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44214487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com