title: read.csv converts numeric to character/factor when values have too many significant digits
body: <p><strong>UPDATE</strong></p>
  
  <p>When reading a csv with <code>read.csv</code>, I require numeric columns with <code>NA</code>, <code>""</code>, <code>NaN</code>, and <code>NULL</code> to be read into a <code>data.frame</code> as numeric. The problem is that some of these cases are converted to character.  In addition, I need to remove any row that does not have complete cases.<br>
  Example data set:</p>
  
  <pre><code>df1 &lt;- read.csv(text="
  + cat ,vala , valb, valc, vald, vale
  + only_valid_row, 1, 1.00000000000002e3, 1.99999999999999999e-2, 2e3, 3
  + a   , ''  , 12  , 13  , 2.1 , 10
  + b   , 2e-3, NA  , 1.1 , 1.11, 8
  + c   , 3e2 , 2.1 , NaN , 3   , 7.1
  + d   , 2   , 1e2 , 0.3 ,     , 0.1
  + e   , 3   , 1e2 , 3.14, 6   , NULL
  + ", stringsAsFactors=FALSE,na.strings=c('NA','NaN','NULL'),quote='\'',strip.white=TRUE)
  
  sapply(df1,class)
          cat        vala        valb        valc        vald        vale 
  #"character"   "numeric"   "numeric" "character"   "numeric"   "numeric" 
  (df2 &lt;- df1[complete.cases(df1),])
               cat vala valb                   valc vald vale
  #1 only_valid_row    1 1000 1.99999999999999999e-2 2000    3
  sapply(df2,class)
  #        cat        vala        valb        valc        vald        vale 
  #"character"   "numeric"   "numeric" "character"   "numeric"   "numeric" 
  </code></pre>
  
  <p>Thanks for the previous answers, but it seems the root of the problem is the number of significant digits after the the decimal point (see <code>valc</code> above). Any suggestions? </p>