упаковать два столбца матрицы в R - PullRequest
1 голос
/ 06 апреля 2011

Предположим, у меня есть матрица из двух столбцов.Как упаковать столбцы в пару / кортеж, чтобы их можно было присвоить матрице из одного столбца?

> A = matrix(NA,nrow=5,ncol=1)
> B = matrix(runif(10),ncol=2)
> A
     [,1]
[1,]   NA
[2,]   NA
[3,]   NA
[4,]   NA
[5,]   NA

> B
          [,1]      [,2]
[1,] 0.1886287 0.6995596
[2,] 0.1576875 0.9792369
[3,] 0.9056386 0.1640904
[4,] 0.9125812 0.7003167
[5,] 0.9327778 0.8149431

> A[,1] = B   # need this to work

У меня есть n-col-матрица цен, столбец для каждой акции.Я пытаюсь вычислить движущуюся статистику MACD для каждой акции.Я использую матрицу MACD n-col, чтобы содержать результаты.Когда я передаю один столбец цены в функцию MACD (из пакета TTR), он возвращает 2-столбную матрицу сигналов и macd, поэтому мне нужно как-то содержать эту статистику в одном измерении.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Вы можете сделать это с помощью списков.

> matrix(apply(B,1,list))
     [,1]  
[1,] List,1
[2,] List,1
[3,] List,1
[4,] List,1
[5,] List,1

Тем не менее, это очень не-R-подобный способ делать вещи и, вероятно, больше проблем, чем оно того стоит.Если вы опишите, что вы на самом деле пытаетесь сделать, кто-то может показать вам более подходящий подход.

ОБНОВЛЕНИЕ:
На основе обновленного вопроса приведенный ниже код будет содержать macd и * 1008.* в матрице 2n.Вы можете написать более сложную функцию (например, такую, которая идентифицирует столбцы macd и signal с соответствующими инструментами).

Если вы хотите, чтобы столбцы macd и signal находились в отдельных матрицахВы можете просто grep столбцы из объекта out.

library(quantmod)
getSymbols("SPY;IWM;QQQ")
Data <- Cl(merge(SPY,IWM,QQQ))
out <- do.call(merge, lapply(1:NCOL(Data), function(i) MACD(Data[,i])))
0 голосов
/ 06 апреля 2011

Если я правильно понимаю ваш вопрос, то:

A[,1] = paste(B[,1], B[,2])

Однако элементы A являются символами, а не векторами. В матрице каждый элемент должен иметь одно значение. Так что это почти наверняка не то, что вы хотите.

Есть два других варианта:

  1. Список (см. Ответ Иисуса Навина)
  2. Массив

но нам нужно больше деталей, чтобы дать вам правильный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...