r - r 对象列表 POINT(坐标)
问题描述
我有一个带有名称、Lon 和 Lat 的数据框 a.fil。name1 43.37390 132.9703 name2 43.35311 132.7493 我创建对象 POINT
point1.sfg <- st_point(unname(unlist(a.fil[1, 2:3])))
point2.sfg <- st_point(unname(unlist(a.fil[2, 2:3])))
类(point1.sfg)[1]“XY”“点”“sfg”
我需要创建对象列表 POINT
ll <- list(point1.sfg, point2.sfg)
类(ll[[1]])[1]“XY”“点”“sfg”
但是,我的数据框包含 1000 行如果我用于...
i <- 1
for (i in 1:nrow(a.fil)) {
ll[i] <- st_point(unname(unlist(a.fil[i, 2:3])))
}
我得到了带有 nrow() 元素的列表,但是......
类(ll [[1]])[1]“数字”
如何从此数据框中创建对象 POINT 列表?非数字
帮我!
解决方案
从一个data.frame
你可以创建一个sf
对象
library(sf)
df <- data.frame(
name = c("a","b","c")
, lon = 1:3
, lat = 3:1
)
sf <- sf::st_as_sf( df, coords = c("lon","lat" ) )
sf
# Simple feature collection with 3 features and 1 field
# geometry type: POINT
# dimension: XY
# bbox: xmin: 1 ymin: 1 xmax: 3 ymax: 3
# CRS: NA
# name geometry
# 1 a POINT (1 3)
# 2 b POINT (2 2)
# 3 c POINT (3 1)
那么 POINT 的列表就是几何列
sf$geometry
# Geometry set for 3 features
# geometry type: POINT
# dimension: XY
# bbox: xmin: 1 ymin: 1 xmax: 3 ymax: 3
# CRS: NA
# POINT (1 3)
# POINT (2 2)
# POINT (3 1)
str( sf$geometry )
# sfc_POINT of length 3; first list element: 'XY' num [1:2] 1 3
如果你真的想要一个 POINT 对象列表,你可以删除sfc
该类
unclass( sf$geometry )
# [[1]]
# POINT (1 3)
#
# [[2]]
# POINT (2 2)
#
# [[3]]
# POINT (3 1)
推荐阅读
- php - 为什么我不能将 mysql 结果放入 $_SESSION
- c# - 如何确定线程是否被 PLINQ 查询阻塞?
- python - 如何用汤从div中提取跨度信息
- android - 颤振构建错误 - 合并 dex 档案
- python - 使用 Flask 命令时未加载 Flask 配置
- python - 如何对 Python 中不知道返回值的函数进行单元测试
- c# - 如何在 Xml DOCTYPE 声明参考中附加文本?
- python - 清理数据框,其中变量位置在列之间不一致,例如。加班或删除成员的股票指数
- python-3.x - 如何在数据框中适当地测试 Pandas dtypes?
- jquery - Bootsrap 4 - 手风琴在悬停时不工作/如预期的那样悬停