2017-09-04 4 views
1

Ich verwende folgende Skript die Ergebnisse für die serielle Korrelation zur Ausgabe:R: Formatierung der Schleifenausgabe - ohne wiederholte Spaltennamen?

serial = function(x,y,z){ 
    for (i in 1:4) { 
    table_serial <- data.frame(i, 
    serial.test(VAR(cbind(x,y),p=i,type="const"),lags.pt=4, type=z)$serial$statistic[[1]],     
    serial.test(VAR(cbind(x,y),p=i,type="const"),lags.pt=4, type=z)$serial$p.value[[1]], digits=3)) 
    colnames(output) <- c("Lag", "Chi", "p") 
    print(data.frame(serial)) 
    } 
} 

lags.pt=4 ist die Anzahl der Lags-I-Tests sind für, da die Daten Quartalsdaten sind. Die Funktion

serial(data[1],data[2], "PT.asymptotic") 

kehrt

Lag Chi p 
1 1 41.46 0.581 
    Lag Chi p 
1 2 50.032 0.133 
    Lag Chi p 
1 3 40.097 0.293 
    Lag Chi p 
1 4 40.582 0.142 

Gibt es eine Möglichkeit zum Wieder Druck des Spaltentitels und Zeilen zu vermeiden? Meine gewünschte Ausgabe:

Lag Chi p 
1 41.46 0.581 
2 50.032 0.133 
3 40.097 0.293 
4 40.582 0.142 

Vielen Dank für Ihre Hilfe!

Antwort

1

Folgendes funktioniert, was Sie wollen.

serial = function(x,y,z){ 
    table_serial <- data.frame() 
    for (i in 1:4) { 
     s1 <- serial.test(VAR(cbind(x,y), p=i, type="const"), lags.pt=4, type=z)$serial$statistic[[1]] 
     s2 <- serial.test(VAR(cbind(x,y), p=i, type="const"), lags.pt=4, type=z)$serial$p.value[[1]] 
     table_serial <- rbind(table_serial, c(i, s1, s2)) 
    } 
    colnames(table_serial) <- c("Lag", "Chi", "p") 
    table_serial 
} 

# test it 
set.seed(1234) # make it reproducible 
serial(rnorm(100), rnorm(100), "BG") 
    Lag  Chi   p 
1 1 13.76826 0.8420485 
2 2 27.77865 0.1147436 
3 3 17.09634 0.6467093 
4 4 13.58514 0.8508920