You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gamma (sample variogram) estimate output by variogramST() is NA when the data input is an STIDF() object that itself has a data object entered as a tibble -- a special type of data frame that is commonly used these days with the popularization of the tidyverse. The documentation of STIDF()'s data argument says that it should be a data frame -- which a tibble is.
in the variogramST() function. It's subsetting the data@data object using [<vector>, 1], which returns a vector when data@data is a plain data frame, and remains a tibble when data@data is a tibble.
Summary of suggested fixes
The simplest fix is to update the documentation of STIDF()'s data argument, specifying that it has to be a regular data frame, not a tibble data frame.
Better would be to add a line to STIDF(): data <- as.data.frame(data) (this strips away the special tibble class, if present).
Best would be to add , drop = TRUE to the [] indexing.
Reproducible Example of the Computation Error
Load dependencies:
library(tidyverse)
library(sp)
#> The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,#> which was just loaded, will retire in October 2023.#> Please refer to R-spatial evolution reports for details, especially#> https://r-spatial.org/r/2023/05/15/evolution4.html.#> It may be desirable to make the sf package available;#> package maintainers should consider adding sf to Suggests:.#> The sp package is now running under evolution status 2#> (status 2 uses the sf package in place of rgdal)
library(gstat)
library(spacetime)
library(lubridate)
#> #> Attaching package: 'lubridate'#> The following objects are masked from 'package:base':#> #> date, intersect, setdiff, union
Generate temperature data at different (x, y) locations across 4 days
Turn that data into (1) a spatial dataset, and (2) a dataset of the dependent variable (temperature)
## Make spatial dataxy<- select(full, x, y)
coordinates(xy) <-~x+y## Make dataset of dependent variable (temperature).## NOTE that class is a tibble -- a special type of data framedata<- select(full, temperature)
class(data)
#> [1] "tbl_df" "tbl" "data.frame"
Make spatiotemporal (STIDF()) data and corresponding sample variograms:
Using data as a tibble.
Using data as a data frame only.
stdat1<- STIDF(xy, full$time, data=data)
stdat2<- STIDF(xy, full$time, data= as.data.frame(data))
vv1<- variogramST(temperature~1, data=stdat1, tunit="days", tlags=0:4,
progress=FALSE)
#> Warning in mean.default((data[, , colnames(m)[1]]@data[indSp[, 1], 1] - :#> argument is not numeric or logical: returning NA
vv1$gamma#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA#> [51] NA NA NA NA NA NA NA NA NA NAvv2$gamma#> [1] NA NA NA NA 0.01638317 0.30720071#> [7] NA 0.41096178 0.50923723 0.25442567 1.46648330 0.04606630#> [13] 0.41838934 0.23442360 0.05686060 NA 0.13897625 1.40272114#> [19] 0.15111853 0.37774027 0.90697259 1.83911154 4.01188360 2.63673603#> [25] 4.18618535 1.55124883 1.24112682 0.21521518 0.40065672 0.65988774#> [31] NA 1.03942542 NA NA 1.74519573 3.34520046#> [37] 0.61374727 0.79421057 0.42605686 0.70225243 1.99483642 1.10960392#> [43] 0.05751237 1.83829579 0.89214221 NA NA NA#> [49] NA NA 0.01868505 NA NA NA#> [55] NA NA 0.21618180 0.03618512 NA 0.54229038
Summary of the problem
The
gamma
(sample variogram) estimate output byvariogramST()
isNA
when thedata
input is anSTIDF()
object that itself has adata
object entered as a tibble -- a special type of data frame that is commonly used these days with the popularization of the tidyverse. The documentation ofSTIDF()
'sdata
argument says that it should be a data frame -- which a tibble is.Summary of the culprit
The reason behind the
NA
s is because of the linein the
variogramST()
function. It's subsetting thedata@data
object using[<vector>, 1]
, which returns a vector whendata@data
is a plain data frame, and remains a tibble whendata@data
is a tibble.Summary of suggested fixes
STIDF()
'sdata
argument, specifying that it has to be a regular data frame, not a tibble data frame.STIDF()
:data <- as.data.frame(data)
(this strips away the special tibble class, if present)., drop = TRUE
to the[]
indexing.Reproducible Example of the Computation Error
Load dependencies:
Generate temperature data at different (x, y) locations across 4 days
Turn that data into (1) a spatial dataset, and (2) a dataset of the dependent variable (temperature)
Make spatiotemporal (
STIDF()
) data and corresponding sample variograms:data
as a tibble.data
as a data frame only.(snip 40 warnings like this)
Sample variogram is
NA
whendata
is a tibble:Created on 2023-07-07 with reprex v2.0.2
The text was updated successfully, but these errors were encountered: