Ошибка с функцией укрепления ggplot2

Я пытаюсь преобразовать пространственный объект в data.frame с помощью функции fortify из пакета ggplot2. Но я получаю сообщение об ошибке. Например, следуя точно такому же коду, который используется в примере построения шейп-файлов полигонов Хэдли Викхан, я набираю следующую строку команд:

 require("rgdal") 
 require("maptools")
 require("ggplot2")
 require("plyr")
 utah = readOGR(dsn="/path/to/shapefile", layer="eco_l3_ut")
   OGR data source with driver: ESRI Shapefile 
   Source: ".", layer: "eco_l3_ut"
   with 10 features and 7 fields
   Feature type: wkbPolygon with 2 dimensions
 utah@data$id = rownames(utah@data)

Вроде все работает нормально:

 > str(utah)
      ..@ data       :'data.frame': 10 obs. of  8 variables:
      .. ..$ AREA      : num [1:10] 1.42e+11 1.33e+11 3.10e+11 4.47e+10 1.26e+11 ...
      .. ..$ PERIMETER : num [1:10] 4211300 3689180 4412500 2722190 3388270 ...
      .. ..$ USECO_    : int [1:10] 164 170 204 208 247 367 373 386 409 411
      .. ..$ USECO_ID  : int [1:10] 163 216 201 206 245 366 372 385 408 410
      .. ..$ ECO       : Factor w/ 7 levels "13","14","18",..: 7 3 1 4 5 6 2 4 4 6
      .. ..$ LEVEL3    : int [1:10] 80 18 13 19 20 21 14 19 19 21
      .. ..$ LEVEL3_NAM: Factor w/ 7 levels "Central Basin and Range",..: 4 7 1 6 2 5 3 6 6 5
      .. ..$ id        : chr [1:10] "0" "1" "2" "3" ...
      ...
      ...

Однако, когда я пытаюсь преобразовать объект utah с помощью функции fortify из пакета ggplot2, я получаю следующую ошибку:

 > utah.points = fortify(utah, region="id")
  Error in UseMethod("fortify") : no applicable method for 'fortify' applied to an object of class "c('SpatialPolygonsDataFrame', 'SpatialPolygons', 'Spatial')"

Я получаю ту же ошибку для всех других пространственных объектов, которые я пытался преобразовать с помощью fortify; даже при использовании кода, который работал нормально в прошлом (до обновления до версии R 3.0.2).

У меня есть версия R 3.0.2, работающая на Mac с Intel Core i7 и 16 ГБ оперативной памяти.


person Jose Antonio H. Company    schedule 05.10.2013    source источник


Ответы (3)


У меня возникла та же проблема.
После переустановки основных пакетов сообщение об ошибке по-прежнему было.

В конце концов я понял, что функция fortify также присутствует в пакете lme4, который был загружен после ggplot2.
Использование ggplot2::fortify(utah, region="id") решило проблему.

person Gilles    schedule 13.05.2015

Я понял, что проблема связана с файлом .Rprofile. Вот что у меня есть в этом файле:

options(repos="http://cran.stat.ucla.edu")
utils::update.packages(ask=FALSE)
pkgs <- getOption("defaultPackages")
options(defaultPackages = c(pkgs,"ggplot2","arm", "Zelig","stringr", "plyr", "reshape2", "MatchIt", "ISLR", "rgdal"))

Всякий раз, когда ggplot2 загружается из .Rprofile, я получаю сообщение об ошибке, упомянутое в моем вопросе выше. Всякий раз, когда я убираю ggplot2 из параметров .Rprofile, я не получаю ошибку.

person Jose Antonio H. Company    schedule 07.10.2013

Я скачал шейп-файл и попробовал ваш код; он (или, скорее, forfify) отлично работал на моей установке. Я предлагаю вам переустановить основные пакеты, перезагрузиться и попробовать еще раз.

> utah.points = fortify(utah, region="id")
Loading required package: rgeos
rgeos version: 0.3-1, (SVN revision 413M)
 GEOS runtime version: 3.3.8-CAPI-1.7.8 
 Polygon checking: TRUE 

> head(utah.points)
      long     lat order  hole piece group id
1 -1405382 2224519     1 FALSE     1   0.1  0
2 -1406958 2222744     2 FALSE     1   0.1  0
3 -1408174 2221195     3 FALSE     1   0.1  0
4 -1409680 2220162     4 FALSE     1   0.1  0
5 -1411068 2219579     5 FALSE     1   0.1  0
6 -1412780 2219001     6 FALSE     1   0.1  0
> tail(utah.points)
          long     lat order  hole piece group id
19615 -1172872 1741373 19615 FALSE     1   9.1  9
19616 -1172522 1740139 19616 FALSE     1   9.1  9
19617 -1172366 1739158 19617 FALSE     1   9.1  9
19618 -1172124 1737840 19618 FALSE     1   9.1  9
19619 -1171788 1737281 19619 FALSE     1   9.1  9
19620 -1171309 1736884 19620 FALSE     1   9.1  9
> 
person SlowLearner    schedule 05.10.2013