2011-08-01 2 views
1

Я пытаюсь создать матрицу 256 * 256 в R. Простые задачи, я думал ... Если я создаю данные такие, чтоОшибка создания матрицы в г

aa=1:65536 
z = matrix(bb,nrow=256,ncol=256,byrow=T) 

У меня есть матрица я хочу, например,

 [,1] [,2] [,3] [,4] [,5] 
[1,] 1 2 3 4 5 

и так далее. Тем не менее, я не создаю данные «AA», но читая его вместо того, чтобы таким образом, что

aa = read.table("myfile.txt",header=F) 
> aa[c(1:10),] 
[1] 1513.708 1513.971 1514.067 1513.971 1513.875 1513.622 1513.524 1513.578 1513.577 1513.481 

Когда я прочитал аа, данные выглядят нормально, но когда я пытаюсь и превратить ее в матрицу, матрица читается как

 [,1]   [,2]   [,3]   [,4]   [,5] 
[1,] Numeric,65536 Numeric,65536 Numeric,65536 Numeric,65536 Numeric,65536 

и так далее. Любая идея, почему это происходит?

Большое вам спасибо за помощь!

+0

Как вы «превратили его в матрицу». Я предполагаю, что вы не использовали data.matrix(), что было бы правильным путем. Полагает, что вы зациклились на ней и создали матрицу списков. –

+0

Какой класс aa? (попробуйте 'class (aa)'). –

+0

@DWin Вы на месте. Вот как я создал матрицу. Благодаря вашему ответу я понимаю, что это не способ сделать это. Я буду использовать data.matrix в будущем. @Joris Meys класс 'data.frame' – SnowFrog

ответ

2

Примечание Этот пункт в разделе «Использование памяти» в ?read.table:

‘read.table’ is not the right tool for reading large matrices, 
especially those with many columns: it is designed to read _data 
frames_ which may have columns of very different classes. Use 
‘scan’ instead for matrices. 

Конечно, ваша 256x265 матрица не большой но scan все еще кажется более подходящим.

aa <- matrix(scan("myfile.txt"), nrow=256, ncol=256, byrow=TRUE) 
1

Оцените sep="" параметр read.table(). С помощью параметра sep вы можете определить разделители для вашего файла, какие разделители вы можете определить и как вы находите в ?read.file. Прокомментируйте, есть ли дополнительные проблемы.

EDIT: можете ли вы скопировать несколько файлов, которые вы читаете?

+0

Я только что понял, что выполнение 'z = matrix (aa [c (1: 65536),], nrow = 256 , ncol = 256, byrow = T) 'решил проблему, хотя я не совсем понимаю, почему мне нужно указывать' aa [c (1: 65536),] ' – SnowFrog

+0

нам не нужен код, который вы используете, а часть вашего файл для просмотра форматирования, например первые 100 символов вашего файла –

+0

Извините, я нажал кнопку ввода, прежде чем заканчивать свой предыдущий комментарий. – SnowFrog

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