【发布时间】:2019-07-02 14:42:30
【问题描述】:
我有一个像这样的数据框(dat),到目前为止,geom_transect 是一个因素。 我想通过指定 geom_transect 是几何列但没有成功将我的数据框转换为 sf 对象。 这是我的桌子
rn geom_transect
1 c(2.59301435154815, 51.0850974058788)
2 c(2.65908408179987, 51.120810848601)
3 c(3.33344625797791, 51.3620269560137)
4 c(4.36158333330571, 51.2919925240015)
5 c(4.11514955241717, 51.1308060725143)
我试过了:
st_as_sf(as.numeric(as.character(dat$geom_transect)))
我收到以下错误消息:
Error in UseMethod("st_as_sf") :
no applicable method for 'st_as_sf' applied to an object of class "c('double', 'numeric')"
In addition: Warning message:
In st_as_sf(as.numeric(as.character(dat$geom_transect))) :
NAs introduced by coercion
我也试过了:
st_point(is.numeric(dat$geom_transect))
Error in st_point(is.numeric(dat$geom_transect)) :
is.numeric(x) is not TRUE
欢迎任何帮助,在此先感谢!
【问题讨论】:
-
您不能使用
as.numeric将“c(2.59301435154815, 51.0850974058788)”转换为两个数字。少了一三步。您可以尝试使用scan(text=.,sep=",", what=""),或eval(parse(text=.),或strsplit(,然后使用sub()删除“c(”和“)”,然后删除as.numeric。我敢肯定这个问题有很多重复,尽管我承认最有效的搜索方法还不是很清楚。进行搜索后,可能使用一些提示,您应该编辑您的问题以包含dput(head(dat))并粘贴相关答案的链接。 -
您还应该解释为什么该列看起来像这样。您是否是在错误的假设下做出的,即有一条简单的路径可以将其传递给以后的函数?回溯到有原始文本或原始数字的地方可能会容易得多。