R ggplot-Can';不要分配大向量

R ggplot-Can';不要分配大向量,r,ggplot2,out-of-memory,geom-raster,R,Ggplot2,Out Of Memory,Geom Raster,我试图绘制一个相对较小的数据集,但我无法让它显示该图。它不断给出错误错误:无法分配大小为9.7GB的向量。这对我来说没有多大意义,因为数据集非常小 > nrow(locs) [1] 130 > head(locs) STATION AVGTRANGE LAT LONG 1: USC00286979 22.13333 40.6971 -75.2042 2: USC00360022 21.33333 40.5361 -79.8152 3: USC0036

我试图绘制一个相对较小的数据集,但我无法让它显示该图。它不断给出错误
错误:无法分配大小为9.7GB的向量。这对我来说没有多大意义,因为数据集非常小

> nrow(locs)
[1] 130
> head(locs)
       STATION AVGTRANGE     LAT     LONG
1: USC00286979  22.13333 40.6971 -75.2042
2: USC00360022  21.33333 40.5361 -79.8152
3: USC00360132  24.37037 40.5227 -78.3694
4: USC00360140  19.80000 40.4949 -78.4667
5: USC00360147  22.36667 41.3585 -77.9262
6: USC00360457  20.68000 40.8209 -76.4983
我是怎么策划的

gg <- ggplot(data = locs, aes(x = LONG, y = LAT)) +
  geom_raster(aes(fill=AVGTRANGE), interpolate=TRUE)
gg # can't allocate here

我不确定您使用geom_光栅想要实现什么,因为您的数据似乎不符合目的

考虑点图的输出:

gg <- ggplot(data = locs, aes(x = LONG, y = LAT, colour = AVGTRANGE)) +
  geom_point()
  #geom_raster(aes(fill=AVGTRANGE), interpolate=TRUE)
gg 

data(faithfuld)
gg <- ggplot(faithfuld, aes(waiting, eruptions, colour = density)) +
  geom_point()
  #geom_raster(aes(fill = density), interpolate = TRUE)
gg
更新

我已经检查了
geom_光栅的代码,它试图创建巨型图的原因是,图的分辨率基于点之间的最小距离。由于数据中的一些点彼此非常接近,所以矩阵的大小非常大

如果你用循环LAT和长到2位代码工作

locs$LAT <- round(locs$LAT, 0)
locs$LONG <- round(locs$LONG, 0)

locs$LAT你能用
dput
而不是
head
@Bulat来提供你的数据吗添加你的数据请求。除了我的回答之外,我认为这种行为是一个错误。我想在这里提出一个错误:我试图创建一个梯度热图,在这里东西被着色以显示2个点之间的变化。@HSchmale,更好的解决方案是使用克里格法从你的点生成一个均匀分布的光栅,然后将其传递给ggplot。
gg <- ggplot(data = locs, aes(x = LONG, y = LAT, z = AVGTRANGE)) +
  geom_contour()
gg 
locs$LAT <- round(locs$LAT, 0)
locs$LONG <- round(locs$LONG, 0)