Je dois,pour un projet réaliser une carte de Kohonen 4*4.
Cependant, j'obtiens l'erreur
Error in win_index[1, ] : subscript out of bounds
In addition: There were 16 warnings (use warnings() to see them)
Après avoir testé mon code, je suppose que c'est la fonction lapply (ligne 76 ) qui ne s'éxecute pas bien car la matrice ainsi créée ne contient que des NA. Et donc comme cette matrice est utilisée par la suite, le résultat n'est pas coorrect car les NA se retrouve tout au long du programme.
code :
#############################################
##Function for distance calculation (RMSDA)##
#############################################
RMSDA<-function(data_phipsi,Kohonen_matrix)
{
difference<-data_phipsi-Kohonen_matrix
for(j in 1:length(difference)){
if (difference[j]< -180) {difference[j]=difference[j]+360}
if (difference[j]> +180) {difference[j]=difference[j]-360}
}
distance=mean(sqrt(difference^2)) #http://rug.mnhn.fr/seewave/HTML/MAN/rms.html
return(distance)
}
##############################
## Program ###
##############################
for(step in 1:iteration)
{
data_phipsi<-data_phipsi[sample(nrow(data_phipsi)),] # Sample vectors of training (samples of lines of the dataframe)
print(step) #Visualize where we are in loops
for(k_row in 1:nrow(data_phipsi))
{
#Update learn_rate and radius at each row of each iteration
learn_rate<-learning(initial_rate,((step-1)*nrow(data_phipsi))+k_row,data_phipsi)
learn_radius<-learning(initial_radius,((step-1)*nrow(data_phipsi))+k_row,data_phipsi)
#Find distance between each vectors of angles of Kohonen Map and the training vector
phipsi_RMSDA<-lapply(random_list, RMSDA, data_phipsi=data_phipsi[k_row,])
}
}
Comment est-il possible de régler cette erreur de lapply ?
Merci
- Edité par Amandine Lecerf Defer 17 février 2019 à 10:32:11
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
R : subscript out of bounds
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist