gpt4 book ai didi

r - 当我尝试访问 csv 数据框中的所有行时,为什么会收到解析器错误?

转载 作者:行者123 更新时间:2023-12-04 10:33:22 27 4
gpt4 key购买 nike

我刚接触 R 并尝试使用地理编码数据(纬度和经度)。我有一个看起来像的数据集:

> head(MyData)
X Address Lat Long
1 0 25xx Long Bow Ave , 43130, OH 39.75455 -82.63637
2 1 48xy Armandale Nw, 44718, OH 40.85118 -81.47034
3 2 34y Grandview Ave, 8837, NJ 40.53956 -74.33631
4 3 o1 Rhoades Ave, 2032, MA 42.16067 -71.21368
5 4 2o6 Monte Cristo Dr., 89403, NV 39.27049 -119.57708
6 5 43i8 9th Street, 99703, AK 64.82534 -147.67388


library(tigris)
library(plyr)
library(dplyr)

>setwd("C:/Users/abc/Desktop/pathfolder")
>MyData <- read.csv(file="geo.csv", header=TRUE, sep=",")

>lat_tigris <- MyData$Lat
>lon_tigris <- MyData$Long


>block <- call_geolocator_latlon(lat_tigris, lon_tigris)
Error in parse_url(url) : length(url) == 1 is not TRUE

为什么我会收到这个错误?我的目标是为数据框中的所有经纬度行调用 geolocator_latlon 函数。如何才能做到这一点? for 循环会起作用吗?

最佳答案

call_geolocator_latlon 未对其参数进行矢量化。但是,您可以轻松使用基本 R mapply 或 tidyverse purrr::map2 来获得结果。这些函数在不同级别实现 for 循环比自己编写一个更有效。

# base R 
mapply(call_geolocator_latlon, lat = c(38, 39), lon = c(-76, -76))

[1] "240399302001198" "240358105001053"

# tidyverse 
library(purrr)
map2(c(38, 39), c(-76, -76), call_geolocator_latlon)

[[1]]
[1] "240399302001198"

[[2]]
[1] "240358105001053"


请注意, map2 默认返回一个列表而不是一个向量。由于我们可以看到这些是字符串(从引号中),我们可以调用 map2_chr 来代替,并强制它简化为字符向量,就像 mapply 所做的那样。 mapply 有默认参数 SIMPLIFY = TRUE ,所以如果你把它改成 FALSE ,你可以强制它也返回一个列表。

美国人口普查局提供的服务也有 API 的“批处理”选项,但您需要自己实现。这并不复杂,但可能不值得,除非你有成千上万的观察。

https://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf(第 5 页)

关于r - 当我尝试访问 csv 数据框中的所有行时,为什么会收到解析器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57114804/

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