Чтобы увидеть, что произошло, посмотрите на следующий пример:
> (f <- gl(2, 1, 10, labels=3:4))
[1] 3 4 3 4 3 4 3 4 3 4
Levels: 3 4
> as.numeric(f)
[1] 1 2 1 2 1 2 1 2 1 2
> as.numeric(as.character(f))
[1] 3 4 3 4 3 4 3 4 3 4
Чтобы преобразовать фактор (что у вас есть в data.frame
) в numeric
vector, сохраняя при этом метки (иначе вы просто получите его уровни ), вам нужно что-то вроде as.numeric(as.character())
.
Итак, либо убедитесь, что вы правильно прочитали свои входные данные (если числа указаны в кавычках, если для options("stringsAsFactors")
установлено значение ИСТИНА, то, скорее всего, они будут преобразованы в коэффициент), либо впоследствии преобразуйте ваш data.frame,Это можно сделать по столбцам, например:
dfrm <- data.frame(x=factor(c(3,2,1,8,4)), y=factor(c(5,6,1,2,3)))
m <- sapply(dfrm, function(x) as.numeric(as.character(x)))
plot(m)
Я неправильно прочитал ваш вопрос, и я подумал, что вы используете as.matrix
, а не data.matrix
.Это ничего не меняет, поскольку обе функции преобразуют факторы в их внутреннее представление, как указано в интерактивной справке:
Факторы и упорядоченные факторы заменяются их внутренними кодами.