r - 修正方法: 応答$result$geographies$`2010 Census Blocks`[[1]] のエラー: 添字が緯度/経度データの範囲外です

okwaves2024-01-25  9

更新: つまり、私のデータセットでは、座標セットの 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

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。