2013-12-07 2 views
4

Таким образом, я преобразовал мой фрейм данных as.matrix (ДФ):матрицы не рассматривается как числовая R

m<-as.matrix(df) 

Но тогда:

> is.numeric(m) 
[1] FALSE 

Я даже пытался увидеть, если некий единственный фактор в матрице числовой:

> is.numeric(m[15,15]) 
[1] FALSE 

У кого-нибудь еще это случилось?

ответ

3

использование

dims <- dim(m) 
m <- as.numeric(m) 
dim(m) <- dims  

Вероятно, хотят, чтобы обернуть выше в функции


as.matrix не обязательно конвертировать любые произвольные data.frame в числовой.
например:

x <- data.frame(LETTERS) 
m <- as.matrix(x) 
is.numeric(x) 
# [1] FALSE 
is.character(x) 
# [1] TRUE 
+0

m <-as.numeric (m) дал мне список всех значений в моей исходной матрице. Не так полезно. –

+0

@TomA, вы правы. см. править выше –

+0

Я понял, но ваш путь тоже работает. Спасибо за редактирование! –

1

Ах, радости R типов данных.

Матрица в R имеет специальные свойства twp: каждый столбец должен иметь одинаковую длину, и каждый элемент должен иметь один и тот же тип данных. Таким образом, вы можете иметь матрицу символов или матрицу чисел, но вы не можете иметь матрицу с обоими.

Предположим, у вас есть кадр данных, df, с двумя колонками, A и B. A имеет символы и B имеет номера. Это отлично подходит для фреймов данных. Но теперь вы:

m <- as.matrix(df) 

Как @Sven указывает ниже, полученный тип данных матрицы на основе самого общего (символ> Числовой> Integer> логично). R будет принуждать все остальное к этому типу данных в m. И он не предупредит вас (если только принуждение не создает NA's, что возможно).

+3

Результирующий тип данных матрицы не основан на первом типе данных, а на самом общем (символ> числовое> целое> логическое). –

+1

@SvenHohenstein - Спасибо. Я отредактировал свой ответ. – jlhoward

Смежные вопросы