在R中有dput()
sp
对象的实用方法吗?
当我尝试执行以下操作时:
data(World, package = "tmap")
dput(World[1:10, ], file=(tempFile <- tempfile()))
World2 <- dget(tempFile)
我明白了:
> World2 <- dget(tempFile)
Error in parse(file = file, keep.source = keep.source) :
...\file14f4ee257b1:155:23: unexpected '<'
154: 9L, 10L, 12L, 14L, 16L, 17L), class = "data.frame")
155: , polygons = list(<
^
<
通常后跟S4 object of class structure("Polygons", package = "sp")>
,因此dput()
显然无法解析这些嵌套的S4对象。
问题似乎与this one非常相似,但proposed solution在这里不起作用。
对于解决方案,请假设我无权访问文件系统。
编辑:当然,更一般的问题是:如何将完整的sp
对象发送到控制台?
答案 0 :(得分:1)
尽管评论建议将sp
对象保存为.rds
- 文件(这可能是为自己保存的东西时最好的),但有时最好是获得文本版本的物体。实际上,当为SO / SX Q提供reproducible example时,以文本形式提供数据更为方便。此外,如问题中所述,可能存在无法访问文件系统的情况。
如果您只想分享sp
对象的坐标,可以使用rgeos::writeWKT()
library(rgeos)
writeWKT(x)
# [1] "POLYGON ((1441727.5096940901130438 6550163.0046194596216083,
# 1150685.2609429201111197 6669225.7427449300885201,
# 975398.4520359700545669 6603079.7771196700632572,
# 866257.6087542800232768 6401334.5819626096636057,
# 1441727.5096940901130438 6550163.0046194596216083))"
然后可以将其插入到您的示例中,如:
library(rgeos)
x <- readwkt("POLYGON ((1441727.5096940901130438 6550163.0046194596216083,
1150685.2609429201111197 6669225.7427449300885201,
975398.4520359700545669 6603079.7771196700632572,
866257.6087542800232768 6401334.5819626096636057,
1441727.5096940901130438 6550163.0046194596216083))")
不幸的是,因此属性信息(x@data
)和CRS丢失了。因此,如果需要,可以考虑添加dput(x@data)
来创建Spatial*DataFrame
来添加此信息。