よくないやり方
Spatial***DataFrame オブジェクトを作るとき、空間オブジェクト(例: Polygons)をデータの各行に対応付ける方法は2つあります。より堅牢なのは、空間オブジェクトに付いたIDをデータ側の行名に対応させる方法です。これなら不一致があればすぐに気づけます。もう一つは単純に順序で対応させる方法で、1つ目の空間オブジェクトがデータの1行目に対応していると仮定します。
一度作成されると、この対応関係は順序のみに基づきます。data スロットを操作しても、空間オブジェクトが正しい行に対応したままかどうかはチェックされません。これは実務上どういう意味でしょうか?data スロットを直接操作するのは非常に危険ということです!
収入のプロットを作成するには、収入データフレームをトラクトの SpatialPolygonsDataFrame と対応付ける必要があります。@data を直接いじる危険性を示すために、nyc_income を強引に nyc_tracts に入れようとするとどうなるか見てみましょう。
この演習はコースの一部です
R で地理空間データを可視化する
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
library(sp)
# Use str() on nyc_income
# ...and on nyc_tracts@data