2013-07-21 5 views
0

크로스 상호 작용 함수 크로스 스캐너가 있는데, 데이터 매트릭스에있는 각 열의 기능을 반복하고 싶습니다. 이 함수는 다음과 같이이 실행될 때마다 뭔가를 보이는 일부 상호 상관 출력 : CSV 파일로 내보낼 궁극적으로는 데이터 프레임에 그래서 내가 함께 모든 목록을 넣어 좋아할R 및 데이터 프레임에 추가하기

 Lags Cross.Correlation  P.value 
    1  0  -0.0006844958 0.993233547 
    2  1  0.1021006478 0.204691627 
    3  2  0.0976746274 0.226628526 
    4  3  0.1150337867 0.155426784 
    5  4  0.1943150900 0.016092041 
    6  5  0.2360415470 0.003416147 
    7  6  0.1855274375 0.022566685 
    8  7  0.0800646242 0.330081900 
    9  8  0.1111071269 0.177338885 
    10 9  0.0689602574 0.404948252 
    11 10  -0.0097332533 0.906856279 
    12 11  0.0146241719 0.860926388 
    13 12  0.0862549791 0.302268025 
    14 13  0.1283308019 0.125302070 
    15 14  0.0909537922 0.279988895 
    16 15  0.0628012627 0.457795228 
    17 16  0.1669241304 0.047886605 
    18 17  0.2019811994 0.016703619 
    19 18  0.1440124960 0.090764520 
    20 19  0.1104842808 0.197035340 
    21 20  0.1247428178 0.146396407 

을, 그래서 열은 다음과 같습니다 : lags.3, 교차 상관 3, p 값 3, 지연 3, 교차 상관 2 .... p.value.50까지.

나는 다음과 같이 do.call 사용하려고했지만 성공하지 않은 :

for(i in 3:50) 
    { 
     l1<-crosscor(data[,2], data[,i], lagmax=20) 
     ccdata<-do.call(rbind, l1) 
     cat("Data row", i) 
    } 

나는 또한 단지 똑바로 데이터 프레임을 만드는 시도했지만, 단지 지연 열 이름을 얻고있다 :

ccdata <- data.frame() 
    for(i in 3:50) 
    { 
     ccdata[i-2:i+1]<-crosscor(data[,2], data[,i], lagmax=20) 
     cat("Data row", i) 
    } 

내가 뭘 잘못하고 있니? 또는이 작업을 수행하는 방법을 파악하기 위해 액세스 할 수있는 데이터 세트에 온라인 소스가 있습니까? 최고,

답변

0

data.frames에 대한 전치 방법이 있습니다. "크로스 스캐너"가 객체의 이름이라면 다음을 시도하십시오 :

tcrosscor <- t(crosscor) 
write.csv(tcrosscor, file="my_crosscor_1.csv") 

첫 번째 행은 지연 일 것입니다. 두 번째 행, CrossCorrelation의; 세 번째 행은 P.value입니다. 나는 그것을 "평평하게"하여 전체적으로 "수평 적"또는 "와이드"가 될 수 있다고 가정합니다. 고통스럽게 보일지 모르지만 다음과 같이 될 수 있습니다.

single_line <- as.data.frame(unlist(tcrosscor)) 
names(single_line) <- paste("Lag", 'Cross.Correlation', 'P.value'), rep(1:50, 3), sep=".") 
write.csv(single_line, file="my_single_1.csv") 
+0

아, 죄송합니다. 내 원래의 질문이 불투명하다고 생각합니다. 실제로 가장 쉬운 방법은 새 데이터 세트에 추가하려고 시도하지 않고 이전 데이터 세트와 새로 작성한 각각의 새 데이터 세트를 병합하는 것 뿐이라고 생각했습니다. – orange1

관련 문제