2013-04-02 2 views
0

아래 코드의 성능을 향상시키고 자합니다. 내 생각은 st2의 각 열을 자체 행렬로 만드는 방식으로이 작업을 "벡터화"하려고하는 것입니다. 이것이 데이터 프레임이 나를 위해 할 수있는 것입니까?각 행에 다른 행렬이있는 행렬

st<-matrix(nrow=257,ncol=10000) 
st2<-matrix(nrow=257,ncol=10000) 
st[1,]=1489 
for(i in 1:10000) 
{ 
    st2[1,]<-st[(256+1),1] 
    for(j in 2:(256+1)) 
    { 
    st2[j,]=st2[(j-1),] *exp(.5-(.2^2/2)) * rnorm(10000) 
    } 
    print(st2[256+1,]) #this for example, in reality I store these values for later 
} 
+0

당신의 방정식'... * exp ((. 5 - (.2 ...)')은 상수가되어야합니까? 그렇다면 루프 외부로 이동하면 ... 'i'는 어디에서든지 계산할 수 있습니다 – Justin

+3

루프 내에서 "i"인덱스가 보이지 않으므로 replicate가 빠를 수도 있습니다 exp (epression)에 대해 하나의 rnorm() 호출을 계산 한 다음'^ (1 : nrow (st))를 사용하여 누적 된 제품을 처리 할 수 ​​있습니다. "벡터화 할 수 있어야"합니다. 그래서 작은 예제를 만들지 마십시오. 예를 들어 5 * 1000 배 작아서 바보짓을하는 것이 더 합리적일까요? –

+0

'replicate '가 여기에 갈 방법이 될 수도 있습니다. – mrkb80

답변

0

신용은 어떻게 지불해야하는지 잘 모르겠지만, @DWin은 돈으로 ... 복제가 해결책입니다.

관련 문제