I found that using an equal area projection results in different areas for the same polygons if you shift the center of projection (ie to minimize the distortion of your area of interest when you project it).
How is it possible? This defies my understanding of an equal area projection keeping areas intact.
Example:
library(sf)
options(scipen = 20)
south_america <- st_read("https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/south-america.geojson")
# Transform to Lambert azimuthal equal-area projection, default center (0° N 0° E)
south_america_laea <- st_transform(south_america, "+proj=laea +nodefs")
plot(st_geometry(south_america_laea))
st_area(south_america_laea)
Units: [m^2]
83375755616 8467140414780 737655036685 2782483050075 1086627258107 1134458903620 254527695525
211024005330 1290996983204 399946127945 144935413395 177467272516 910435563567 11429672354
# Same Lambert azimuthal equal-area projection, just shift the center of projection to center it on the continent
south_america_laea_2 <- st_transform(south_america, "+proj=laea +lat_0=-32 +lon_0=-60")
plot(st_geometry(south_america_laea_2))
st_area(south_america_laea_2)
Units: [m^2]
83372539973 8467111444577 737677003441 2782466797426 1086627986050 1134453525235 254528299278
211021681369 1291025934349 399948128115 144931686414 177467118512 910429865771 11429872564
Now the areas are different! Not even a linear transformation, just slightly different numbers