我知道在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)
}
字符串
我收到这个错误:
Error: `lon_col`, `lat_col` contains unknown variables
型
4条答案
按热度按时间mwkjh3gx1#
接受的答案对我不起作用,但幸运的是我记得“通过引用赋值”操作符,即:
第一个月
-->
rename(new_variable_name := old_variable_name)
包data.table有关于它的很好的文档in this vignette。
在dqr中,你必须用
sym
和!!
Package 你传递的变量名(关于!!
的帮助在??rlang::quotation
下)。你的新重命名函数应该看起来像这样:字符串
thtygnil2#
最后,我自己找到了答案,这要归功于我的室友分享的一个链接。This document来自tidyverse.org,解释了如何用
dplyr
编程。特别是,如何在dplyr
中获取函数输入并对其进行求值。下面是将工作的代码:
字符串
nwlls2ji3#
这里有一个例子,注意新名称放在左边,当前名称放在右边。你也不需要
c()
或引号。字符串
以你为例:
型
apeeds0o4#
我认为你需要bang-bang(
!!
)来取消字符变量的引号。你还需要使用一个特殊的替代:=
运算符:字符串