as.data.frame.Rd
as.matrix
returns all values of a Raster* object as a matrix. For RasterLayers, rows and columns in the matrix represent rows and columns in the RasterLayer object. For other Raster* objects, the matrix returned by as.matrix
has columns for each layer and rows for each cell.
as.array
returns an array of matrices that are like those returned by as.matrix
for a RasterLayer
If there is insufficient memory to load all values, you can use getValues
or getValuesBlock
to read chunks of the file. You could also first use sampleRegular
The methods for Spatial* objects allow for easy creation of a data.frame with the coordinates and attributes; the default method only returns the attributes data.frame
# S4 method for class 'Raster'
as.data.frame(x, row.names=NULL, optional=FALSE, xy=FALSE,
na.rm=FALSE, long=FALSE, ...)
# S4 method for class 'SpatialPolygons'
as.data.frame(x, row.names=NULL, optional=FALSE,
xy=FALSE, centroids=TRUE, sepNA=FALSE, ...)
# S4 method for class 'SpatialLines'
as.data.frame(x, row.names=NULL, optional=FALSE,
xy=FALSE, sepNA=FALSE, ...)
Raster* object
NULL
or a character vector giving the row names for the data frame. Missing values are not allowed
logical. If TRUE
, setting row names and converting column names (to syntactic names: see make.names) is optional
logical. If TRUE
, also return the spatial coordinates
logical. If TRUE
, remove rows with NA values. This can be particularly useful for very large datasets with many NA values
logical. If TRUE
, values are reshaped
from a wide to a long format
logical. If TRUE
return the centroids instead of all spatial coordinates (only relevant if xy=TRUE
)
logical. If TRUE
the parts of the spatial objects are separated by lines that are NA
(only if xy=TRUE
and, for polygons, if centroids=FALSE
Additional arguments (none)
data.frame
r <- raster(ncol=3, nrow=3)
values(r) <- sqrt(1:ncell(r))
r[3:5] <- NA
as.data.frame(r)
#> layer
#> 1 1.000000
#> 2 1.414214
#> 3 NA
#> 4 NA
#> 5 NA
#> 6 2.449490
#> 7 2.645751
#> 8 2.828427
#> 9 3.000000
s <- stack(r, r*2)
as.data.frame(s)
#> layer.1 layer.2
#> 1 1.000000 2.000000
#> 2 1.414214 2.828427
#> 3 NA NA
#> 4 NA NA
#> 5 NA NA
#> 6 2.449490 4.898979
#> 7 2.645751 5.291503
#> 8 2.828427 5.656854
#> 9 3.000000 6.000000
as.data.frame(s, na.rm=TRUE)
#> layer.1 layer.2
#> 1 1.000000 2.000000
#> 2 1.414214 2.828427
#> 6 2.449490 4.898979
#> 7 2.645751 5.291503
#> 8 2.828427 5.656854
#> 9 3.000000 6.000000