> kTabLen <- 8 # Obtiene la longitud de una fila tabulada, a partir de su longitud no real > RowTabLen <- function (x) { + return(max(x, kTabLen * max((round(x / kTabLen, 0)), 1))) +} > dfRes Parámetro(s) gl F p igualdad de varianzas H1 MESOR (M) ( 2, 235) 0.0397 0.9611 si H2 Amplitud (A) ( 2, 235) 0.1321 0.8763 si H3 Acrofase (phi) ( 2, 235) 0.0410 0.9599 si H4 (A, phi) ( 4, 235) 0.0867 0.9865 si H5 (M, A, phi) ( 6, 235) 0.0661 0.9989 si # Construyo vector de alineación relativa a las columnas de mi data.frame > alineacion <- c("left", "centre", "centre", "centre", "centre") > vBlancosMax=c() # Para cada columna de mi data.frame, # obtengo la longitud del valor máximo (contemplando también el nombre de la columna) # y lo utilizo en un triple sentido: # - A efectos de construir la línea separadora, mediante guiones bajos # - A efectos de formatear el cuerpo del dataframe, añadiendo los blancos correspondientes # - A efectos de formatear la cabecera, añadiendo los blancos correspondientes > for (i in 1:(dim(dfRes)[2])) { + maxLen <- max(max(as.vector(nchar(dfRes[,i]))), nchar(names(dfRes)[i])) + vBlancosMax <- c(vBlancosMax, paste(rep('_', maxLen), collapse='')) + dfRes[,i] <- format(dfRes[,i], width=maxLen, justify=alineacion[i]) + names(dfRes)[i] <- format(names(dfRes)[i], width=maxLen, justify=alineacion[i]) + } > n<-nchar(paste0(vBlancosMax, sep="\t")) > a<-sapply(n, RowTabLen) > sep <- rep('_', sum(a)) > linea.sep <- paste(sep, collapse='') > for (i in 1:(dim(dfRes)[2])) { + names(dfRes)[i] <- format(names(dfRes)[i], width= a[i]) + } > # Escribo línea separadora > write(linea.sep,file="Result.txt", append=FALSE, sep="\n") # Escribo la cabecera de la tabla > cab <- paste0(names(dfRes), sep="\t", collapse='') > write(cab,file="Result.txt", append=TRUE, sep="\n") # Escribo nuevamente la línea separadora > write(linea.sep,file="Result.txt", append=TRUE, sep="\n") # Escribo el cuerpo del data.frame > write.table(dfRes,file="Result.txt", append=TRUE, quote=FALSE, sep="\t",row.names=FALSE, col.names=FALSE)