如何选择s4类中的组件(如普通列表中的组件)?

时间:2018-11-20 14:06:14

标签: r

在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和第6个组件?

我的使用想法

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

不起作用。 R说:

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

1 个答案:

答案 0 :(得分:2)

问题不在于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)

可以正常工作。