我正在尝试使用xtable在html中创建一个表,但是我需要在特定的td
标记中添加一个类,因为我要做一个动画。问题是没有xtable我不能这样做,因为它太慢了。
可能我需要用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)
}
如果我使用xtable执行此操作,我的应用程序需要15秒,但如果我使用myRederTable函数执行此操作我的应用程序需要2分钟,那么我该怎样才能将此类放在td
xtable中。
我正在和R一起工作。
答案 0 :(得分:1)
问题是你正在增长一个字符串: 每次附加到它时,都必须将其复制到新的内存位置。 首先构建数据作为数组更快, 然后才将其转换为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" )