Всегда всегда делайте сводку (вещь), если что-то неожиданно.
> summary(df)
charCol floatCol intCol
a:1 1.5 :1 10 :1
b:1 -3.4:1 3 :1
c:1 3.9 :1 4 :1
d:1 NULL:1 NULL:1
это выглядит немного странно. Развернуть:
> summary(df$floatCol)
1.5 -3.4 3.9 NULL
1 1 1 1
Какого черта это?
> class(df$floatCol)
[1] "factor"
Наличие недопустимого числового формата (строка 'NULL') заставило R идти "о, я думаю, это не числа, я прочитаю их в символьные строки и сделаю для вас фактор (категориальную переменную) ».
Только что было опубликовано решение использовать na.string = "NULL", но помните, что NA - это не то же самое, что NULL в R. NA - маркер для отсутствующих данных, NULL - подлинная не-ценность Для сравнения:
> c(1,2,3,NULL,4)
[1] 1 2 3 4
> c(1,2,3,NA,4)
[1] 1 2 3 NA 4
После того, как вы правильно прочитали, подходящим тестом обычно является is.na (foo)