Почему slotNames работает с data.frame, хотя на самом деле это не объект S4? - PullRequest
0 голосов
/ 24 ноября 2018

Блок кода ниже ...

data(meuse.grid)
isS4(meuse.grid)
slotNames(meuse.grid)
#meuse.grid@names # this will fail
class(meuse.grid)

coordinates(meuse.grid) = ~x+y
isS4(meuse.grid)
slotNames(meuse.grid)
head(meuse.grid@data)
class(meuse.grid)

... производит следующий вывод:

library(sp)
data(meuse.grid)
isS4(meuse.grid)
#> [1] FALSE
slotNames(meuse.grid)
#> [1] ".Data"     "names"     "row.names" ".S3Class"
#meuse.grid@names # this will fail
class(meuse.grid)
#> [1] "data.frame"

coordinates(meuse.grid) = ~x+y
isS4(meuse.grid)
#> [1] TRUE
slotNames(meuse.grid)
#> [1] "data"        "coords.nrs"  "coords"      "bbox"        "proj4string"
head(meuse.grid@data)
#>   part.a part.b      dist soil ffreq
#> 1      1      0 0.0000000    1     1
#> 2      1      0 0.0000000    1     1
#> 3      1      0 0.0122243    1     1
#> 4      1      0 0.0434678    1     1
#> 5      1      0 0.0000000    1     1
#> 6      1      0 0.0122243    1     1
class(meuse.grid)
#> [1] "SpatialPointsDataFrame"
#> attr(,"package")
#> [1] "sp"

Создано в 2018-11-24 представьте пакет (v0.2.1)


Таким образом, кажется, slotNames не может использоваться, чтобы определить, содержит ли объект действительно слоты, но чтообъяснение этого поведения?

...