gpt4 book ai didi

使用 dplyr 中的函数输入重命名列

转载 作者:行者123 更新时间:2023-12-05 08:41:49 24 4
gpt4 key购买 nike

我知道有很多关于在 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 

最佳答案

接受的答案对我不起作用,但幸运的是我记得“按引用赋值”运算符,它是:

:=

-->

重命名(new_variable_name := old_variable_name)

数据包 data.table 有很好的文档 in this vignette .

在 dplyr 中,你必须用 sym!! 包装你传递的变量名(关于 !! 的帮助在 ??rlang::quotation)。您的新重命名函数应如下所示:

data %>%
rename(!!sym(lon_col) := lon,
!!sym(lat_col) := lat)

关于使用 dplyr 中的函数输入重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com