2013-05-22 4 views
1

У меня есть матрица, все записи целые. и значения в столбцах являются дискретными. Поэтому я хочу хранить их в качестве факторов. Я преобразовал каждый столбец в факторы. Но тип записей теперь стал символом. Я обнаружил, что преобразование в символ по умолчанию. Но тогда я попробовал то, что дано в руководствепреобразовать матрицу целых чисел в матрицу с факторизацией с целыми значениями

M is the integer matrix 

say x <- M[,1] 

factor(x,levels=as.integer(x)) 

Но это по-прежнему дает характер записей

Любая помощь будет оценена

Спасибо

+0

Используя ваш тестовый код, я получаю фактор, а не символ. – thelatemail

+0

ya это фактор, но записи имеют тип символьных данных @thelatemail, я хочу, чтобы они были целыми. (Я новичок в R) – saiteja

+0

Вся идея факторов заключается в том, чтобы преобразовать векторы символов в векторы целых чисел, чтобы сэкономить пространство памяти. В вашем случае у вас уже есть векторы целых чисел, поэтому априори не используются для факторов. – flodel

ответ

1

Используя ваш пример

set.seed(123) 
M <- matrix(sample(1:5,30,replace=TRUE),nrow=5) 
x <- M[,1] 

# now make a factor - added unique around x to prevent a warning 
test <- factor(x,levels=as.integer(unique(x))) 

Это результат:

> test 
[1] 2 4 3 5 5 
Levels: 2 4 3 5 

> is.factor(test) 
[1] TRUE 
> is.character(test) 
[1] FALSE 
> is.numeric(test) 
[1] FALSE 
> str(test) 
Factor w/ 4 levels "2","4","3","5": 1 2 3 4 4 
+0

О, мое восприятие, что каждая запись является символом или целой, ошибочна, я думаю. каждая запись имеет тип данных факторов. Я имею в виду тип данных теста [i] @ thelatemail – saiteja