2015-03-18 3 views
0

Иногда я написал багги R-код, который создал объект, который print ed как матрица, но где элементы были векторами. Это может выглядеть примерно так:Matrix-shaped list

 [,1]   [,2]   [,3] 
[1,] character,2 character,2 character,2 
[2,] character,2 character,2 character,2 
[3,] character,2 character,2 character,2 

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

Что это? Как это сделать? Каковы его свойства? Как итерация по строкам и столбцам, как его эффективность сравнивается с вложенным списком, массивом или списком матриц?

+0

Это матрица списков. Чтобы сделать это, вы можете сделать 'matrix (list (c (" a "," b ")))' например –

+0

@RichardScriven, так что это всего лишь список с атрибутом '.Dim'? Это мое впечатление, основанное на 'dput (matrix (list (c (" a "," b "))))'. Это действительно здорово, и я удивляюсь, почему никто этого не делает. Во всяком случае, вы должны отправить это как ответ. – shadowtalker

+0

Это на самом деле матрица объектов, которая, как вы говорите, является просто списком с атрибутом измерения. Вы можете поместить в него все, что хотите, включая функции. Он работает в основном как список, за исключением того, что вы можете получить к нему доступ с двумерными индексами. – mrip

ответ

1

Создание один довольно тривиальна:

mtx <- matrix(list(letters[1:2]), 4,4) 
mtx 
#---------- 
    [,1]  [,2]  [,3]  [,4]  
[1,] Character,2 Character,2 Character,2 Character,2 
[2,] Character,2 Character,2 Character,2 Character,2 
[3,] Character,2 Character,2 Character,2 Character,2 
[4,] Character,2 Character,2 Character,2 Character,2 

атрибут (и функция, которая возвращает его) называется «тусклым». Я бы не ожидал, что это будет очень сильно отличаться с точки зрения эффективности доступа. Матрицы в R на самом деле просто сложенные векторы.

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