问题描述
我需要遍历两千对经纬度。我写了一个for循环,它只填充前20行,然后停止。我在documentation中找不到任何限制,但是我认为我可以写一个Sys.sleep
来解决这个问题。没有骰子,我一定想念一些东西。
dput,因为我找不到包含经纬度对的现成数据源。
> dput(fw %>% select(lat,lon,Offense) %>% head(22))
structure(list(lat = c(32.7305737101884,32.7071796535597,32.801343650586,32.6497235905068,32.9196968288275,32.8213635863012,32.7606031381985,32.7090479791265,32.7353753247409,32.7785087695848,32.7268425544181,32.7179541491143,32.7500856566189,32.7352690680259,32.6608938090998,32.741037616671,32.7885499640296,32.6267787210864,32.6226562944531,32.8036718521628,32.7325453290282),lon = c(-97.3299315325775,-97.440786931728,-97.3856410446521,-97.3216047378274,-97.3406980675876,-97.4589971745759,-97.22609732855,-97.3480226360202,-97.4690739426462,-97.3015112961882,-97.3316422324573,-97.439848768221,-97.3569699397729,-97.471429159867,-97.4017441039168,-97.265145927386,-97.3860506325934,-97.3798330465665,-97.3782646205598,-97.2906413984061,-97.3701635007801),Offense = c("90Z","23G","220","290","90J","90F","23H","240","23C","90E","13B","90Z","23F","35A","120")),row.names = c(NA,-22L),class = c("tbl_df","tbl","data.frame"))
这是我到目前为止提出的代码:
fw$tract <- NA
for(i in seq_along(fw)){
fw$tract[i] <- tigris::call_geolocator_latlon(lat = fw$lat[i],lon = fw$lon[i])
if(i %% 20 == 0) {
Sys.sleep(1000)
}
}
期望的结果:带有数据段的数据框不仅仅包含前20行。
期待任何提示! 谢谢!
解决方法
好的,这主要是用户错误和深夜混乱:
-
我实际上不是在使用FCC Area API(这是单独尝试)。我正在使用
baseurl
中的call_geolocator_latlon()
函数,已将tigris标签添加到帖子中。 -
在上面的尝试中,我使用的是没有列引用的
tigris
,所以seq_along
沿着列排序...共有20个!因此停在20行。
这是一些修改后的代码:
i in seq_along(df)