更新: つまり、私のデータセットでは、座標セットの 1 つが (49.277298, -123.067902) であり、これが唯一の範囲外であるだけでなく、分析に大混乱を引き起こす唯一のセットでもあります。この追加がお役に立てば幸いです!
緯度と経度のみをリストするデータセットの国勢調査コードを見つけることに取り組んでいますが、応答 $result$geographies$2010 Census Blocks[[1]] でエラーが発生し続けます。
添え字が範囲外です
for ループを使用する場合:
ids <- c()
for(i in 1:nrow(census)){
if(is.na(census$locationlatitude[i])){
id <- NA
} else {
id <- call_geolocator_latlon(census$locationlatitude[i], census$locationlongitude[i])
}
ids <- c(ids, (id))
}
次に、apply も使用します。
census <- read.csv("census_tract.csv")
census <- census[,c(1:3)]
census$rowid <- 1:nrow(census)
censusNA <- na.omit(census)
censusNA$census_tract <- apply(censusNA, 1, function(row)
call_geolocator_latlon(row['LocationLatitude'], row['LocationLongitude']))
censusNA <- censusNA[,c(3,4)]
census_tract <- merge(census, censusNA, by = "rowid", all.x = TRUE)
両方とも戻ります
応答$result$geographies$2010国勢調査ブロック[[1]]のエラー:
添え字が範囲外です
スタック オーバーフローへようこそ。どのようなパッケージを使用していますか?問題を再現できるよう、サンプル データをいくつか含めていただけますか?
– itsMeInマイアミ
2020 年 9 月 3 日 22:44
こんにちは!そこで、問題の原因となっている特定の行を特定しました。このラットロンは (49.277298, -123.067902) であり、範囲外メッセージを表示する唯一の行です。
– アニブラズ
2020 年 9 月 4 日 15:44
------------------------
次のように ifelse() を使用すると、ループを回避できるはずです。
ifelse( is.na(census$locationlatitude),
NA,
call_geolocator_latlon(census$locationlatitude, census$locationlongitude)
)
これは、call_geolocator_latlon がベクトル化されていることを前提としています。
1
ああ!これを試してみました。残念ながら、実行すると「parse_url(url) のエラー: length(url) == 1 は TRUE ではありません」というメッセージが表示されました。
– アニブラズ
2020 年 9 月 4 日 15:03