2011-04-06 6 views
1

두 행렬이 있다고 가정합니다. 하나의 열 매트릭스에 할당 할 수 있도록 열을 페어/튜플에 팩하는 방법은 무엇입니까?2 행의 행렬 팩 R

> 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 열인 행렬, 각 주식에 대한 열이 있습니다. 각 주식에 대해 움직이는 MACD 통계를 계산하려고합니다. 결과를 포함하기 위해 n-col MACD 행렬을 사용하고 있습니다. 한 팩의 가격을 MACD 함수 (TTR 패키지에서)에 공급할 때 2 행의 신호 및 macd 행렬을 반환하므로 동일한 차원에서이 통계를 포함 할 방법이 필요합니다.

+1

왜이 작업을 수행 하시겠습니까? 원하는 것을 Google에 알려 주면 대안을 제안 할 수 있습니다. 행렬리스트 ... – Andrie

+0

더 많은 문맥을 제공하는 수정 된 질문. 덕분에 – user236215

+0

사실 나는 단지 MACD 매트릭스에 2n cols를 만들어 나중에 참조 할 수 있습니다. 이것은 아마도 아래에 제시된 것보다 더 깨끗한 솔루션 일 수 있으며 더 효율적입니다. 어떻게 생각해? – user236215

답변

2

목록을 사용하여이를 수행 할 수 있습니다.

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

즉, 이것은 일을하는 매우 비 R 형 방식이며, 가치가있는 것보다 더 큰 문제 일 것입니다. 실제로 무엇을하려고하는지 설명하면 누군가가 당신에게 더 적절한 접근법을 보여줄 수 있습니다.

는 UPDATE :
는 업데이트 된 질문을 바탕으로, 아래의 코드는 2N 매트릭스에 macdsignal을 넣어 것입니다. 보다 정교한 기능 (예 : macdsignal 열을 각각의 도구로 식별하는 기능)을 작성할 수 있습니다.

signal 열을 별도의 매트릭스로 사용하려는 경우 out 개체의 열을 grep 개만 허용 할 수 있습니다.

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

그러나, A의 요소를 문자가 아닌 벡터입니다 : 다음, 제대로 질문을 이해하면

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

. 행렬에서 각 요소는 단일 값이어야합니다. 그래서 이것은 거의 당신이 원하는 것이 아닙니다.

다른 두 가지 옵션이 있습니다 :

  1. 목록 (여호수아의 답변을 참조)
  2. 배열

그러나 우리는 당신에게 적절한 대답을하는 자세한 내용이 필요합니다.

관련 문제