Подтвердить что ты не робот

Преобразование коэффициента в числовое без потери информации R (as.numeric(), похоже, не работает)

Возможный дубликат:
R - Как преобразовать коэффициент в целое число\число в R без потери информации

Мне было обращено внимание на следующий факт о функции as.numeric()

> blah<-c("4","8","10","15")
> blah
[1] "4"  "8"  "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4  8  10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2

Когда я преобразовываю коэффициент с уровнями 4, 8, 10 и 15 в количественную переменную с использованием as.numeric(), каждое число преобразуется в ранжирование, а исходные значения теряются.

Как взять вектор "blah.new", который имеет уровни 10,15, 4 и 8, и преобразовать его в числовые значения 10, 15, 4 и 8?

(Эта проблема возникла из-за набора данных, где количественная переменная считывается read.table() как фактор)

Спасибо!!!!

***** Обновление: ФИГУРЫ ИЗОБРАЖЕНИЯ ******

blah.new1<-as.numeric(as.character(blah.new))

Однако мне интересно, где в документации для as.numeric() говорится, что эта функция преобразует аргументы в список ранжирования?

4b9b3361

Ответ 1

Во-первых, фактор состоит из индексов и уровней. Этот факт очень важен, когда вы боретесь с фактором.

Например,

> z <- factor(letters[c(3, 2, 3, 4)])

# human-friendly display, but internal structure is invisible
> z
[1] c b c d
Levels: b c d

# internal structure of factor
> unclass(z)
[1] 2 1 2 3
attr(,"levels")
[1] "b" "c" "d"

здесь z имеет 4 элемента.
индекс 2, 1, 2, 3 в этом порядке.
Уровень связан с каждым индексом : 1 → b, 2 → c, 3 → d.

Затем as.numeric просто преобразует часть фактора index в числовой.
as.character обрабатывает индекс и уровни и генерирует вектор символов, выраженный его уровнем .

?as.numeric говорит, что методы обрабатываются методом по умолчанию.