Я пытаюсь построить сегменты, которые соединяют точки в coordinates
, это то, что пытается выполнить моя plot.mst()
функция.Я не смог увидеть, работает ли эта функция должным образом, потому что, когда я запускаю этот код, я получаю сообщение об ошибке
"Ошибка в arcList [i, 1]: индекс за пределами границ"
И все же я не уверен, почему это происходит.
Я подумал, что это может иметь какое-то отношение к имени столбца, поэтому я изменил arcList[i,1]
на arclist[i]
, что-то вроде этого, но теперь ошибка в следующей строке, как вы видите ниже.Я попробовал двойные скобки и сингл там, и ни один не помог.
Как мне справиться с этой ошибкой или избежать ее?
n = 50
x = round(runif(n)*1000)
y = round(runif(n)*1000)
coordinates = cbind(x,y)
d = as.matrix(dist(coordinates))
AdjMatrix2List = function(d) {
indices = which(!is.na(d), arr.ind = TRUE)
ds = cbind(indices[,2], indices[,1], d[indices])
colnames(ds) = c("head", "tail", "weight")
return(ds)
}
ds = AdjMatrix2List(d)
ds.mst = msTreePrim(1:n,ds)
#Examine ds.mst$tree.arcs
str(ds.mst$tree.arcs)
num [1:49, 1:3] 1 29 1 28 30 6 6 9 27 21 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:3] "ept1" "ept2" "weight"
plot.mst = function(arcList) {
for (i in seq_along(arcList))
start = arcList[i]
end = arcList[i,2]
segments(coordinates(start,1), coordinates(start,2), coordinates(end,1), coordinates(end,2))
}
plot(x,y,pch=16)
plot.mst(ds.mst$tree.arcs)
> *Error in arcList[[i, 2]] : subscript out of bounds*