Geting une erreur Typeerror avec des hachages (Pas de conversion implicite de symbole en entier)
J'ai fait un script d'exemple. Voici un exemple de script que je suis en cours d'exécution:
def array_generator
signalp_array = Array.new(11){ Array.new(11,0) }
signalp = Hash.new
file = File.readlines("./sample.txt")
file.each_with_index do |line, idx|
row = line.gsub(/\s+/m, ' ').chomp.split(" ") # split the line into a array based on white space.
signalp_array[idx][0..row.length - 1] = row # Merge into existing array
end
signalp_array.each do |g|
seq_id = g[0]
cut_off = g[4]
d_value = g[8]
signalp[seq_id] = [:cut_off => cut_off, :d_value => d_value]
end
return signalp
end
signalp = array_generator
puts signalp
signalp.each do |id, neww|
puts id
puts neww[ :cut_off]
puts neww[ :d_value]
end
avec lequel j'obtiens le résultat suivant et de l'erreur:
isotig00001_f1_3
in `[]': no implicit conversion of Symbol into Integer (TypeError)
Depuis le puts signalp
ligne me donne les éléments suivants:
{"isotig00001_f1_3"=>[{:cut_off=>"11", :d_value=>"0.132"}], "isotig00001_f1_5"=>[{:cut_off=>"11", :d_value=>"0.162"}], "isotig00001_f1_7"=>[{:cut_off=>"11", :d_value=>"0.397"}], "isotig00001_f1_8"=>[{:cut_off=>"11", :d_value=>"0.259"}], "isotig00001_f1_9"=>[{:cut_off=>"11", :d_value=>"0.110"}], "isotig00001_f1_10"=>[{:cut_off=>"11", :d_value=>"0.135"}], "isotig00001_f1_11"=>[{:cut_off=>"1", :d_value=>"0.000"}], "isotig00001_f1_12"=>[{:cut_off=>"12", :d_value=>"0.117"}], "isotig00001_f2_0"=>[{:cut_off=>"11", :d_value=>"0.108"}], "isotig00001_f2_1"=>[{:cut_off=>"28", :d_value=>"0.122"}], "isotig00001_f2_3"=>[{:cut_off=>"19", :d_value=>"0.097"}]}
le hachage est créé correctement. Cependant je ne peux pas accéder à la :cut_off
et :d_value
individuellement (probablement, parce qu'ils sont des chiffres). J'ai essayé to_i
, to_s
des méthodes, etc.
- Quelqu'un pourrait-il me faire savoir ce que je fais de mal?
- Toutes les idées sur ce qu'il faut rechercher ou pour en savoir plus sur le sujet?
OriginalL'auteur Ismail Moghul | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
neww
n'est pas une table de hachage, c'est un tableau[{:cut_off=>"11", :d_value=>"0.132"}]
. NeOriginalL'auteur sawa
Les valeurs dans votre
neww
de hachage sont tableaux de hachages, et pas seulement à nu les tables de hachage. Vous avez besoin d'index dans le tableau avant de l'incrustation dans la table de hachage. Qui est:OriginalL'auteur Chowlett