R mapping (C stack usage 7971616 is too close to the limit)

Dear all,

I got the feedback as below when processed plot(world). I have installed and activated sf package under Rstudio.

Could someone help. Thanks!

C stack usage 7971616 is too close to the limit

There is not that much that can be done about C stack usage from within R; you can monitor it via Cstack_info() but that is about it.

I suspect that there is something wrong about the object you are plotting - what class is it, and what was its origin? It does not come from {sf}.

In order to reduce the load on your session you may consider one of two things:

  • print(st_geometry(world)) = just the boundaries (without data)
  • print(world, max.plot = 1) = just the first data item from world dataframe (whatever that is)

Hi jlacko,
Thanks for the response. I just gave it a try on print(st_geometry(world)) and got the result as below:

Geometry set for 177 features
geometry type: MULTIPOLYGON
dimension: XY
bbox: xmin: -180 ymin: -90 xmax: 180 ymax: 83.64513
Error: C stack usage 7971072 is too close to the limit

By the way, I did check Cstack_info() and got:

Cstack_info()
size current direction eval_depth
7969177 31216 1 8

stupid, stupid me! it should have been plot, not print
my apologies

No worries. I did try that too and got:

plot(st_geometry(world))
Error: C stack usage 7970944 is too close to the limit

...

strange... and where did you get the world object from?

My favorite world map is via

library(tmap)
data("World") # note the capital W!
plot(st_geometry(World))

and it is pretty bulletproof

1 Like

This is always a curveball because the problem is hidden away in the recesses of the operating system that we generally don't visit.

Whether your machine has 4 GB of memory or is attached to 512GB of virtual memory through a shared pool (this actually came up yesterday), there is a tunable per user parameter set on how much is available at any one time.

One tell is that 2^{5.8914} \approx 2^{16}. But no one I know goes around thinking in base2 all the time.

But all modern OSs that I know do.

It turns out that in the unices (can't say about windows) there is a command to manage this

 $ 578:  ulimit
unlimited

See man ulimit for guidance on how to adjust yours.

1 Like

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.