如何将GPX提取的路径起止点整合到R代码的目标语句中
动态替换GPX路线名称到数据访问语句中
看起来你已经搞定了从GPX文件提取起点终点名称的部分,现在就差把这个动态生成的字符串整合到那行手动编写的代码里了对吧?
首先要注意:你之前用A<-cat(sprintf("\"%s %s %s\"\n", C[1],"to", C[2]))这行代码其实有个小问题——cat()函数是用来在控制台输出内容的,它的返回值是NULL,所以A其实存的是空值,这没法直接用来替换硬编码的路线名。我们需要先把生成的路线名称字符串存到一个变量里,再用这个变量去访问数据框的元素。
方法一:先存储路线名称,再访问数据
# 从waypoints提取起点和终点名称,生成"起点 to 终点"格式的字符串 route_name <- sprintf("%s to %s", C[1], C[2]) # 用动态生成的route_name替换硬编码的"Paris to Rome" dl$X1 <- df[[1]][[route_name]][["lon"]]
方法二:直接在代码中拼接(更简洁)
如果不想单独创建变量,也可以直接把sprintf的结果放到[[ ]]里:
dl$X1 <- df[[1]][[sprintf("%s to %s", C[1], C[2])]][["lon"]]
额外建议:增加异常处理
为了避免因为GPX文件中waypoints数量不足(比如少于2个)导致报错,可以加个简单的判断:
if (length(C) >= 2) { route_name <- sprintf("%s to %s", C[1], C[2]) dl$X1 <- df[[1]][[route_name]][["lon"]] } else { warning("无法生成路线名称:GPX文件中的途经点数量不足2个") }
这样就能完美实现把从GPX自动提取的起止点名称,动态替换到你原本手动编写的代码里啦!
内容的提问来源于stack exchange,提问作者BramV
相关产品推荐
相关产品推荐

