【发布时间】:2018-09-22 14:36:43
【问题描述】:
我有一个坐标对列表列表,这些列表是从 SpatialLinesData 框架sldf 中提取的 - 列表中的每个列表都代表一个单独的线串:
res <- lapply(slot(sldf, "lines"), function(x) lapply(slot(x, "Lines"),
function(y) slot(y, "coords")))
> str(res)
List of 1683
$ :List of 1
..$ : num [1:130, 1:2] -122 -122 -122 -122 -122 ...
$ :List of 1
..$ : num [1:120, 1:2] -122 -122 -122 -122 -122 ...
$ :List of 1
..$ : num [1:162, 1:2] -122 -122 -122 -122 -122 ...
$ :List of 1
..$ : num [1:34, 1:2] -122 -122 -122 -122 -122 ...
我的目标是遍历每个线串的每个坐标对并打印坐标对。
for (i in 1:length(res){
print(res[i])
}
将这样打印每个列表:
[[1]]
[[1]][[1]]
[,1] [,2]
[1,] -122.4449 37.76559
[2,] -122.4449 37.76559
[3,] -122.4449 37.76559
[4,] -122.4449 37.76559 ...
在列表中。更进一步,我可以打印每个列表的各个行号。
for (i in 1:length(res)){
for (i in 1:length(res[i][[1]][[1]]))
{
print(i)
}
}
如何更进一步并获得每个坐标对?
以下产生错误subscript out of bounds
for (i in 1:length(res)){
for (i in 1:length(res[i][[1]][[1]]))
{
print(res[1][[1]][[1]][i,])
}
}
【问题讨论】:
-
嗨,@the_darkside。我不太了解您想要的输出是什么样的,我也不确定您的列表列表的外观。我认为如果你能提供一个数据的小例子和几行所需的输出可能会有所帮助。对于嵌套的 for 循环,将计数变量命名为 i 和 i 之类的名称可能会有所帮助。所以你可以在内循环中使用 res[[i]][[j]]。