如何确定向量/列表中包含多个条目的行?

时间:2018-12-04 21:17:50

标签: r list vector row

Screenshot of list

我有一个列表来自一个空间多边形数据框,该数据框现在大多数条目只有一个元素。但是,其中一些每行包含2个或有时3个区域(每行是一个多边形,其他区域通常是供参考的孔)。该列表看起来类似于:

arealist =

Name     Type        Value
arealist list[120]   List of length 120
[[1]]    double[1]   0.0007
[[2]]    double[1]   0.00043
[[3]]    double[1]   0.0006
[[4]]    double[1]   0.0002
[[5]]    double[1]   0.00012  0.0023
[[6]]    double[1]   0.0007

如您所见,第5行列出了2个区域,其余的列出了一个区域。我尝试了以下方法:

arealist[length>1]

"Error in length > 1 : 
  comparison (6) is possible only for atomic and list types"

但是我的文件区域列表的标题为“列表[120]”,它是120个元素的列表。我经历了一下,看看它是否被认为是矩阵或向量,并说向量或矩阵:

is.matrix(arealist)
# [1] FALSE
is.vector(arealist)
# [1] TRUE

我也尝试过:

grep('[length(arealist)>1]',arealist)

刚刚列出了行索引1到120。

which(length(arealist[[1:NROW(arealist)]])>1)

# Error in arealist[[1:NROW(arealist)]] : 
#   recursive indexing failed at level 2

which(length(arealist[[1:120]])>1)
# Error in arealist[[1:120]] : recursive indexing failed at level 2

which(length(arealist[[1:120,]])>1)    
# Error in arealist[[1:120, ]] : incorrect number of subscripts

which(length(arealist[[1]])>1)
# integer(0)

which(length(arealist[[112]])>1)
# [1] 1

在我的实际区域列表中,有4个实例存在多个区域,因此0和1都不正确。有什么想法吗?谢谢

PS,这是我之前获取多边形区域的列表的方式:

  

arealist <-sapply(slotly(slot(poly,“ polygons”),function(x)sapply(slot(x,“ Polygons”),slot,“ area”))

     

flatarea <-取消列表(arealist,use.names = FALSE)#flatten列表

     

maxareatf <-扁平区> 0.02#仅给出正确/错误答案

     

maxareaidx <-which(maxareatf == TRUE)#其面积大于阈值

     

maxareaidx <-as.numeric(maxareaidx)#make数字类

     

maxareasub =子集(flatarea,flatarea []> 0.02)#subset那些具有大于阈值的区域

     

maxarea = data.frame(maxareaidx,maxareasub)#建立索引和大于阈值的区域的矩阵

输出具有区域插槽,但是它们可以包含多个区域,所以同样。

0 个答案:

没有答案