我知道关于在 R 中重命名列有很多类似的问题,但我仍然没有找到一种优雅的方法来实现这个简单的任务,而这可以在 Python 中轻松完成。
这是一个将 GIS 数据帧转换为空间点的简单函数。但首先我想将坐标列重命名为“lon”和“lat”。一些数据将它们标记为“X”和“Y”,而其他数据可能将它们标记为“long”和“lat”。所以我希望用户指定“lon”和“lat”的列名称。我在用dplyr。但是,以下将不起作用。
library("magrittr")
library("tidyverse")
ToSpatialPoint <- function(data, lon_col="long",lat_col="lati"){
data %<>% rename(lon=lon_col,lat=lat_col) %<>% distinct(lon,lat) %<>% filter(!is.na(lon),!is.na(lat))
processed_pts <- SpatialPoints(coords=cbind(lon=data$lon,lat=data$lat), proj4string = CRS("+init=epsg:4326"))
return(processed_pts)
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error: `lon_col`, `lat_col` contains unknown variables
Run Code Online (Sandbox Code Playgroud)
接受的答案对我不起作用,但幸运的是我记得“引用赋值”运算符,它是:
:=
-->
rename(new_variable_name := old_variable_name)
data.table 包在这个小插曲中有关于它的很好的文档。
在 dplyr 中,您必须用sym和包装您传递的变量名称!!(有关帮助的信息!!位于??rlang::quotation)。您的新重命名函数应如下所示:
data %>%
rename(!!sym(lon_col) := lon,
!!sym(lat_col) := lat)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4307 次 |
| 最近记录: |