2013-03-30 6 views
6

Sto provando a creare una tabella in html con xtable, ma ho bisogno di aggiungere una classe allo specifico tag td, perché ho intenzione di fare una animazione. Il problema è che non posso farlo senza xtable perché è così lento.Con xtable e type = html come aggiungere una classe a uno specifico tag td

Potrebbe essere necessario rappresentarlo ma con xtable.

myRenderTable<-function(){ 
    table = "<table>" 
    for(i in 1:4862){ 
    table = paste(table,"<tr><td>",i,"</td>",sep="") 
    for(j in 1:5){ 

     if(j == 5){ 
     table = paste(table,"<td class ='something'>",i+j,"</td>",sep="") 
     } 
     else{ 
     table = paste(table,"<td>",i+j,"</td>",sep="") 
     } 
    } 
    table = paste(table,"</tr><table>") 
    } 
    return(table) 
} 

Se lo faccio con la mia app XTABLE prende 15sec, ma se lo faccio con la funzione myRederTable mia app vogliono 2 minuti, quindi come posso fare per mettere questa classe in una td con XTABLE.

Sto lavorando con R e lucido.

+1

Possiamo ottenere alcuni dati di esempio e quale dovrebbe essere l'output desiderato? –

risposta

1

Il problema è che si sta crescendo una stringa: ogni volta che si aggiunge ad essa, deve essere copiata in una nuova posizione di memoria. È più veloce costruire i dati prima come array, e solo dopo convertirlo HTML.

# Sample data 
n <- 4862 
d <- matrix( 
    as.vector(outer(0:5, 1:n, `+`)), 
    nr = 10, nc = 6*n, byrow=TRUE 
) 
html_class <- ifelse(col(d) %% 6 == 0, " class='something'", "") 

# The <td>...</td> blocks 
html <- paste("<td", html_class, ">", d, "</td>", sep="") 
html <- matrix(html, nr=nrow(d), nc=ncol(d)) 

# The rows 
html <- apply(html, 1, paste, collapse = " ") 
html <- paste("<tr>", html, "</tr>") 

# The table 
html <- paste(html, collapse = "\n") 
html <- paste("<table>", html, "</table>", sep="\n") 
+0

Grazie per la risposta, ma l'applicazione impiega molto tempo per eseguirla con la tua fonte, questa è la ragione per continuare a usare xtable, se qualcuno conosce altre opzioni, per favore, dimmi. – user2029940

Problemi correlati