Я думаю, что у вас есть одна проблема: вы используете вызов as.numeric(as.character(.))
для всего кадра данных, а не для конкретного столбца. Результатом является вектор, длина которого равна числу столбцов в вашем кадре данных (обратите внимание, что ваш вывод представляет собой вектор длины 54, а не 788, как вы бы надеялись из столбца исходного кадра данных). Вот почему:
При преобразовании кадра данных символа, вы получите вектор обратно:
df <- data.frame(V1 = c(1,2,3), V2 = c(4,5,6))
as.character(df)
[1] "c(1, 2, 3)" "c(4, 5, 6)"
Обратите внимание, что каждый элемент вектора не векторный характер (т.е. c("1","2","3")
), но на самом деле вектор, представляющий этот столбец, преобразованный в строку символов (то есть: "c(1, 2, 3)"
). Поэтому, когда вы применяете as.numeric
к этому вектору, вы получите вектор назад (а не кадр данных), и поскольку каждый элемент не может быть преобразован в число (или даже числовой вектор), вы получаете NA
s назад:
as.numeric(as.character(df))
[1] NA NA
Что вы, скорее всего, ищете, это преобразование для одного столбца, а не для всего кадра данных. Попытка:
ff$V1 <- as.numeric(as.character(ff$V1))
Таким образом, вы преобразовываете вектор в вектор, который должен дать вам результат, который вам нужен. Вы можете сделать это через каждую колонку с помощью lapply
, что-то вроде:
df <- lapply(df, function(x) as.numeric(as.character(x)))
df <- as.data.frame(df)
(или еще лучше, установите colClasses
, когда вы читаете файл в соответствии @ s.brunel замечания, так что вам не нужно беспокоиться об этом преобразовании вообще)
ПРИМЕЧАНИЕ также комментарий @ akrun. Вы должны ожидать предупреждение при преобразовании вектора, в котором некоторые значения не могут быть преобразованы в класс, который вы хотите. В вашем случае у вас есть значения " - "
, которые не могут быть преобразованы в числовые, поэтому вместо них вы получите NA
.
У вас есть элементы типа '' - ''. Предупреждающее сообщение является дружественным, и оно преобразует эти элементы в NA – akrun
. Установите 'colClasses' в числовое значение при чтении –
@ user7403680, вы все еще интересуетесь этим? Что-нибудь здесь помогло вам, или у вас все еще есть эта проблема? – rosscova