2016-01-13 3 views
1

Я хочу прочитать файл csv как матрицу, а матрица - числовая. followwing мой кодкак читать данные в виде матрицы?

1, прочитать данные

mydata<-read.csv("mydata.csv", header = TRUE, sep=',', check.names = FALSE) 
str(mydata) 

2, преобразование как числовые данные

mydata_1<-data.matrix(mydata) 
str(mydata_1) 

Для первого шага, на выходе будет нормально see pic1

, но для второго шага, когда я хочу преобразовать dataframe в числовую матрицу, выход изменяется следующим образом. Посмотрите, что имена ростов и имена столбцов были изменены, а значения ячеек также не соответствуют истине, которые не нужны. see pic2

Я также пробовал следующий синтаксис, но он дал тот же результат, что и выше.

mydata_1<-sapply(mydata, as.numeric) 

и вот ссылка моего файла данных link of mydata

Любое предложение ценится.

+5

Моей догадки (и я не буду загружать данные Вы должны сделать свой вопрос [воспроизводимым] (http://stackoverflow.com./questions/5963269/how-to-make-a-great-r-воспроизводимый пример) без ссылки на внешние данные) заключается в том, что ваши данные были факторами для начала. – Heroka

+2

Вы пробовали 'read.csv (..., na.strings =" - ")'? –

+2

Вы также можете попробовать 'row.names = 1' в вашем вызове' read.csv() ', чтобы сделать этот первый столбец в именах строк. И дополнительная заметка: 'header = TRUE' и' sep = "," 'являются значениями по умолчанию в' read.csv() '. Вам не нужно писать их. –

ответ

3

Это связано с тем, что у вас есть несколько типов данных (factor, num), а матрица может хранить только один тип данных. Я предлагаю вам удалить первую колонку, чтобы иметь только числовые:

mydata_1<-data.matrix(mydata[,-1]) 
+1

Спасибо @HubertL, но мне нужны имена стран, как имена строк, поэтому я не могу его удалить. Это первая проблема, а вторая проблема заключается в том, что функция 'data.matrix()' изменяет величину значения данных, которая не нужна. –

+0

Почему вы хотите использовать матрицу? – HubertL

+1

Спасибо @HubertL. Ты прав. Проблема действительно заключается в именах розеток, поэтому, добавив «rowname = 1», проблема решена. –

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