Как выбрать компоненты в классе s4, как компоненты в обычных списках? - PullRequest
0 голосов
/ 20 ноября 2018

в R можно создать список

k <- list()
k[[1]] <- airquality
k[[2]] <- rock
k[[3]] <- AirPassengers
k[[4]] <- airmiles
k[[5]] <- trees
k[[6]] <- treering

и выбрать его с помощью

k[c(1:3,6)]

Как это можно сделать в классе S4?

например, я создаю некоторые данные из пакета dismo:

library(dismo)
example(voronoi)

, который выполняет следующее:

p <- matrix(c(17, 42, 85, 70, 19, 53, 26, 84, 84, 46, 48, 85, 4, 95, 48, 54, 66, 74, 50, 48, 
              28, 73, 38, 56, 43, 29, 63, 22, 46, 45, 7, 60, 46, 34, 14, 51, 70, 31, 39, 26), ncol=2)

v <- voronoi(p)
v

Я хочу выбрать координаты многоугольника, это можно сделать с помощью.

v@polygons[[1]]@Polygons[[1]]@coords.

Мой вопрос: Как выбрать, например, с 1 по 3 и шестой компонент?

Моя идея использовать

v@polygons[c(1:3,6)]@Polygons[[1]]@coords

не работает.Р говорит:

Error: trying to get slot "Polygons" from an object of a basic class ("list") with no slots

1 Ответ

0 голосов
/ 20 ноября 2018

Проблема не в v@polygons[c(1:3,6)], а в попытке применить @Polygons[[1]]@coords непосредственно к результирующему списку.вместо этого вы можете использовать lapply() на v@polygons[c(1:3,6)] следующим образом:

result <- lapply(v@polygons[c(1:3,6)], function(x) x@Polygons[[1]]@coords)

, который работает как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...