2013-12-10 3 views
0

У меня есть переменная в R, который выглядит как такR - уровни раздражающе Мессинг вещи, простой вопрос

> q 
[1] 0.4231 
Levels: 0.4231 

Я хочу, чтобы избавиться от этого сумасшедшие уровни вещи. Я просто хочу значение. Как мне это сделать. Я пробовал

> as.numeric(q) 
[1] 1 

Какой из них не работает.

Например, я хочу сделать несколько простых арифметических операций, таких как q+1, который я в настоящее время не может сделать

> q+1 
[1] NA 
Warning message: 
In Ops.factor(q, 1) : + not meaningful for factors 
+1

Глупый вопрос: почему это фактор в первую очередь? Похоже, вы что-то читаете неправильно? –

ответ

3

Я думаю, что вы забыли сделать несколько простых шагов. Во-первых, если вы хотите преобразовать q в числовой, as.numeric(q) возвращает q только как числовое, без преобразования q в числовое. Во-вторых, вы не можете перейти непосредственно от коэффициента к числовому; вам нужно преобразовать его в символ, а затем в числовое.

Это то, что я пытался ниже:

я воспроизвел ваш пример:

q<-as.factor(0.423) 
q 
[1] 0.423 
Levels: 0.423 
as.numeric(q) 
[1] 1 
q+1 
[1] NA 
Warning message: 
In Ops.factor(q, 1) : + not meaningful for factors 

Чтобы показать вам, что вы не можете изменить коэффициент непосредственно числовая: посмотреть, как я + 1 не ес

q<-as.numeric(q) 
q+1 
[1] 2 

Наконец, это правильный способ преобразования добротности в числовую последовательность:

q<-as.numeric(as.character((q))) 
q+1 
[1] 1.423