Dieser Code soll die Gesamtentfernung einiger gegebener Koordinaten berechnen, aber ich weiß nicht, warum er nicht funktioniert.Fehler in lis [[i]]: Versuch, weniger als ein Element auszuwählen
Der Fehler ist:
distant<-function(a,b)
{
return(sqrt((a[1]-b[1])^2+(a[2]-b[2])^2))
}
totdistance<-function(lis)
{
totdis=0
for(i in 1:length(lis)-1)
{
totdis=totdis+distant(lis[[i]],lis[[i+1]])
}
totdis=totdis+distant(lis[[1]],lis[[length(lis)]])
return(totdis)
}
liss1<-list()
liss1[[1]]<-c(12,12)
liss1[[2]]<-c(18,23)
liss1[[4]]<-c(29,25)
liss1[[5]]<-c(31,52)
liss1[[3]]<-c(24,21)
liss1[[6]]<-c(36,43)
liss1[[7]]<-c(37,14)
liss1[[8]]<-c(42,8)
liss1[[9]]<-c(51,47)
liss1[[10]]<-c(62,53)
liss1[[11]]<-c(63,19)
liss1[[12]]<-c(69,39)
liss1[[13]]<-c(81,7)
liss1[[14]]<-c(82,18)
liss1[[15]]<-c(83,40)
liss1[[16]]<-c(88,30)
Ausgabe:: Error in lis[[i]] : attempt to select less than one element.
Hier ist der Code
> totdistance(liss1)
Error in lis[[i]] : attempt to select less than one element
> distant(liss1[[2]],liss1[[3]])
[1] 6.324555
Sie ersetzen sollte 'for (i in 1: Länge (lis) -1)' mit 'für (ich in 1: (Länge (lis) -1)). Der Operator ':' wird vor der Subtraktion '-' ausgewertet. – Molx
Und während wir dabei sind, ist eine Matrix wahrscheinlich besser für eine Polygondaten als eine Liste geeignet, sofern nicht andere Eigenschaften gespeichert werden. – Molx
Problem gelöst. Danke vielmals. –