Your example data are coercible to numeric. Try with data that are not so coercible:
foo <- read.csv(text='"a",b,c
"1",2,3
"3",2,3
"a",2,3 ', stringsAsFactors=TRUE)
> foo$a
# [1] 1 3 a
# Levels: 1 3 a
Otherwise use colClasses
:
foo <- read.csv(text='"a",b,c
"1",2,3
"3",2,3 ', colClasses=c('factor','numeric','numeric'))
> foo$a
# [1] 1 3
# Levels: 1 3
Or you could convert using as.factor
after reading the data in.