В дополнение к ответу Cettt, есть также colClasses
.
Если вы заранее знаете, какие типы данных есть в столбцах вашего CSV-файла, вы можете указать это. Это мешает R «угадать», что такое тип данных, и дает вам знать, когда что-то не так, вместо того, чтобы решить, что это должна быть строка. например если в вашем CSV-файле с 4 столбцами есть столбцы Текст, Факторы, Целое, Числовое, вы можете использовать
read.table("mycsv.csv", header = T, sep = ",", dec = ".",
colClasses=c("character", "factor", "integer", "numeric"))
Отредактировано, чтобы добавить:
Как указал gersht, проблема, скорее всего, в нецифровке в столбце чисел. Зачастую это может быть способом кодирования значения NA. Указание colClasses
заставляет R выдавать сообщение об ошибке, когда он встречает любые такие значения «не числовые или NA», так что вы можете легко увидеть проблему. Если это не код по умолчанию для NA, используйте аргумент na.strings = c("NA", "YOUR NA VALUE")
Если это другая проблема, вам, вероятно, придется исправить файл перед импортом. Например:
read.table(sep=",",
colClasses=c("character", "numeric"),
text="
cat,11
canary,12
dog,1O") # NB not a 10; it's a 1 and a capital-oh.
дает
Ошибка сканирования (файл = файл, что = что, sep = sep, цитата = цитата, dec = dec,:
scan () ожидал 'реального', получил '1O'