title: Importing unquoted strings as factors using read_csv from the readr package in R
body: <p>I have a .csv datafile with many columns.  Unfortunately, string values do not have quotation marks (i.e., apples i.o. "apples).  When I use read_csv from the readr package, the string values are imported as characters:</p>
  
  <pre><code>library(readr)
  
  mydat = data.frame(first = letters, numbers = 1:26, second = sample(letters, 26))
  write.csv(mydat, "mydat.csv", quote = FALSE, row.names = FALSE)
  
  read_csv("mydat.csv")
  </code></pre>
  
  <p>results in:</p>
  
  <pre><code>Parsed with column specification:
  cols(
    first = col_character(),
    numbers = col_integer(),
    second = col_character()
  )
  # A tibble: 26 x 3
     first numbers second
     &lt;chr&gt;   &lt;int&gt;  &lt;chr&gt;
  1      a       1      r
  2      b       2      n
  3      c       3      m
  4      d       4      z
  5      e       5      p
  6      f       6      j
  7      g       7      u
  8      h       8      l
  9      i       9      e
      10     j      10      h
      # ... with 16 more rows
  </code></pre>
  
  <p>Is there a way to force read_csv to import the string values as factors i.o. characters?</p>
  
  <p>Importantly, my datafile has so many columns (string and numeric variables) that, AFAIK, there is no way to make this work by providing column specifications with the col_types argument.</p>
  
  <p>Alternative solutions (e.g. using read.csv to import the data, or dplyr code to change all character variables in a dataframe to factors) are appreciated too.</p>
  
  <p><strong>Update:</strong> I learned that whether or not the values in the csv file have quotes or not makes no difference for read.csv or read_csv. read.csv will import these values as factors; read_csv will import them as characters.  I prefer to use read_csv because it's considerably faster than read.csv.</p>