Podczas pracy z R często pojawia się komunikat o błędzie "indeks dolny". For example:Indeks dolny poza podpunktem - definicja ogólna i rozwiązanie?
# Load necessary libraries and data
library(igraph)
library(NetData)
data(kracknets, package = "NetData")
# Reduce dataset to nonzero edges
krack_full_nonzero_edges <- subset(krack_full_data_frame, (advice_tie > 0 | friendship_tie > 0 | reports_to_tie > 0))
# convert to graph data farme
krack_full <- graph.data.frame(krack_full_nonzero_edges)
# Set vertex attributes
for (i in V(krack_full)) {
for (j in names(attributes)) {
krack_full <- set.vertex.attribute(krack_full, j, index=i, attributes[i+1,j])
}
}
# Calculate reachability for each vertix
reachability <- function(g, m) {
reach_mat = matrix(nrow = vcount(g),
ncol = vcount(g))
for (i in 1:vcount(g)) {
reach_mat[i,] = 0
this_node_reach <- subcomponent(g, (i - 1), mode = m)
for (j in 1:(length(this_node_reach))) {
alter = this_node_reach[j] + 1
reach_mat[i, alter] = 1
}
}
return(reach_mat)
}
reach_full_in <- reachability(krack_full, 'in')
reach_full_in
To generuje następujący błąd Error in reach_mat[i, alter] = 1 : subscript out of bounds
.
Jednak moje pytanie nie jest o tym szczególnym kawałek kodu (choć byłoby pomocne rozwiązania, które też), ale moje pytanie jest bardziej ogólne:
- Jaka jest definicja subscript- błąd out-of-bounds? Co to powoduje?
- Czy istnieją ogólne sposoby podejścia do tego rodzaju błędów?
@ styczeń ma to. Oznacza to, że próbujesz coś dostać, np. Kolumnę lub wiersz, który nie istnieje. Na przykład, powiedzmy, że twoja tabela ma 10 wierszy, a twoja funkcja próbuje wywołać wiersz 15. – Ben
A dla każdego, kto zastanawia się nad tym SZCZEGÓLNYM fragmentem kodu (z laboratoriów analizy sieci McFarlanda), to dlatego, że igraph zmienił swój schemat indeksowania z 0- opiera się na 1, więc "(i-1)" w "podskładniku" powinno być po prostu "i". – Sophologist