require(quantmod)
require(TTR)
iris2 <- iris[1:4]
b=NULL
for (i in 1:ncol(iris2)){
for (j in 1:ncol(iris2)){
a<- runCor(iris2[,i],iris2[,j],n=21)
b<-cbind(b,a)}}
데이터 프레임 내의 서로 다른 열의 롤링 상관 관계를 계산하고 데이터를 별도로 열에 저장하려고합니다. 위의 코드는 변수 b에 데이터를 저장하지만 모든 결과를 무시하는 것만 큼 유용하지는 않습니다. 내가 원하는 것은 각 i에 대해 서로 다른 데이터 프레임을 만들 수 있다는 것입니다.for 루프에서 for 루프의 데이터를 저장하는 방법은 무엇입니까? (r 롤링 상관)
이 경우, 필자가 궁극적으로 원하는 것은 4 개의 데이터 프레임입니다. 각각 4 개의 열이 롤링 상관 관계를 표시합니다. 즉, df1 = col1 대 col1 대 col1,2,3,4, df2 = col 2 대 cor 1,2,3,4 ... 등)
나는 lapply 또는 rollapply를 사용하려고 생각했지만 같은 문제가 발생했습니다.
d=NULL
for (i in 1:ncol(iris2))
for (j in 1:ncol(iris2))
{c<-rollapply(iris2, 21 ,function(x) cor(x[,i],x[,j]), by.column=FALSE)
d<-cbind(d,c)}
모든 입력에 정말 감사하겠습니다.
인덱스 벡터에 'foreach' 루프 또는 mapply를 시도하십시오. DF 목록의 목록을 보여 줄 것입니다. 'i''와'j' 그리고'c & d'에 의해 중첩 됨 – Adam
for 루프에서 cbind를 사용하는 것은 결코 좋은 생각이 아닙니다. 지나치게 메모리에 복사되는 것을 피하려면 사전 정의 된 길이의 목록을 사용하는 것이 훨씬 더 좋습니다. –