ruby - Saying there are 0 arguments when I have 2? Trying to open a CSV file to write into -
i'm trying read csv file , codify people groups using equation. append name of group fall end of array row creates. write new file don't overwrite original file in case goes wrong.
also, loops through directory , multiple csv files.
however, when try open new file write into, it's saying this:
segmenter.rb:12:in `open': wrong number of arguments (0 1) (argumenterror) segmenter.rb:12:in `foreach' segmenter.rb:12:in `<main>'
here script coefficients removed. x's in coefficients array numbers in script.
require 'csv' coefficients = [ [x, x, x, x, x, x, x, x, x, "utilitarians"], [x, x, x, x, x, x, x, x, x, "hometown school/social"], [x, x, x, x, x, x, x, x, x, "state pride"], [x, x, x, x, x, x, x, x, x, "hard-wired advocates"], [x, x, x, x, x, x, x, x, x, "game hunters"] ] dir.foreach |current_file| data_set = csv.read(current_file) data_set.array.each |row| segment_value = 0 segment_name = "" coefficients.each |segment| if (segment[0] * row[1] + segment[1]*row[2] + segment[2]*row[3] + segment[3]*row[4] + segment[4]*row[5] + segment[5]*row[6] + segment[6]*row[7] + segment[7]*row[8]) > segment_value segment_value = segment[0] * row[1] + segment[1]*row[2] + segment[2]*row[3] + segment[3]*row[4] + segment[4]*row[5] + segment[5]*row[6] + segment[6]*row[7] + segment[7]*row[8] segment_name = segment[8] end row << segment_name end csv.open("#{current_file.basename} segmented.csv", "w") |writer| data_set.array.each |data| writer << data end end end end
i believe problem dir.foreach
, not csv.open
.
you need supply directory foreach argument. that's why getting missing argument error.
try:
dir.foreach('/path/to_my/directory') |current_file|
i think open
referenced in error message when dir
trying find directory open in order file list foreach
.
Comments
Post a Comment