You can also automate it with this:
do.multirow<-function(df, which=1:ncol(df)){
for(c in which){
runs <- rle(as.character(df[,c]))
if(all(runs$lengths>1)){
tmp <- rep("", nrow(df))
tmp[c(1, 1+head(cumsum(runs$lengths),-1))] <-
paste("\\multirow{",runs$lengths,"}{*}{",df[c(1,
1+head(cumsum(runs$lengths),-1)),c],"}",sep="")
df[,c] <- tmp
}
}
return(df)
}
This will replace the "which"-columns of data.frame "df"
that have only
repeated entries in the "which"-columns of data.frame "df"
with the
appropriate \multirow commands.
You then have to use print.xtable with sth like
print(xtable(do.multirow(df)),
sanitize.text.function = function(x){
return(x)
}
)
[[alternative HTML version deleted]]
You can also automate it with this:
do.multirow<-function(df, which=1:ncol(df)){
??? for(c in which){
??? ??? runs <- rle(as.character(df[,c]))
??? ??? if(all(runs$lengths>1)){
??? ??? ??? tmp <- rep("", nrow(df))
??? ??? ??? tmp[c(1, 1+head(cumsum(runs$lengths),-
1))] <-
??? ??? ??? ??? ???
paste("\\multirow{",runs$lengths,"}{*}{",df[c(1,
1+head(cumsum(runs$lengths),-1)),c],"}",sep="")
??? ??? ??? df[,c] <- tmp
??? ??? }
??? }
??? return(df)
}
This will replace the "which"-columns of data.frame "df"
that have
only repeated entries with the appropriate \multirow commands.
You then have to use print.xtable with sth like
print(xtable(do.multirow(df)),
??? ??? sanitize.text.function = function(x){
??? ??? ??? return(x)
??? ??? }
)