[R] Looking for a package to replace xtable

Bert Gunter bgunter.4567 at gmail.com
Fri Apr 21 19:42:26 CEST 2017


??
Works for me.

Perhaps show us the output of sessionInfo(). Mine is:

R version 3.3.3 (2017-03-06)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12.3

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] lattice_0.20-34 backports_1.0.5

loaded via a namespace (and not attached):
[1] tools_3.3.3 grid_3.3.3

--Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Fri, Apr 21, 2017 at 10:14 AM, BR_email <br at dmstat1.com> wrote:
> David:
> Hate to bother you, but because you have seen my code perhaps
> you can tell me what I am doing wrong.
> I want to replicate my original Response data by 0 times, called
> ResponseX10.
> All is good until the first calculation, cum_R.
> Would you kindly, assist me?
> Thanks.
> Bruce
> ****
> Response <- data.frame(Response=rbinom(50,1,0.2), yhat=runif(50))
> Response <- Response[order(Response$yhat,decreasing=TRUE),]
>
> ResponseX10 <- do.call(rbind, replicate(10, Response, simplify=FALSE))
>
> ResponseX10    <- ResponseX10[order(ResponseX10$yhat,decreasing=TRUE),]
>
> ResponseX10[[2]] <- NULL
> ResponseX10
>
> cum_R    <- cumsum(Response)
> cum_R
> *******
>
> Bruce Ratner, Ph.D.
> The Significant Statistician™
> (516) 791-3544
> Statistical Predictive Analtyics -- www.DMSTAT1.com
> Machine-Learning Data Mining and Modeling -- www.GenIQ.net
>
> David L Carlson wrote:
>>
>> You can rename the columns with colnames() before passing it to xtable.
>> This will let you use characters that data.frame would automatically
>> convert.
>>
>> I don't see an easy way to center the columns when printing an html file.
>> If you are not making too many of these, you could open the .html file into
>> a WYSIWIG html editor such as BlueGriffon, make the changes and save the
>> file. If you have Microsoft Excel and Word, another fallback solution is to
>> read the .html file into Excel where you have a wide variety of styles.
>>
>> David C
>>
>> -----Original Message-----
>> From: BR_email [mailto:br at dmstat1.com]
>> Sent: Thursday, April 20, 2017 4:31 PM
>> To: David L Carlson <dcarlson at tamu.edu>; r-help at r-project.org
>> Subject: Re: [R] Looking for a package to replace xtable
>>
>> David:
>> All is perfect, almost - after I ran your corrections.
>> Is there a way I can have more control of the column names, i.e.,
>> not be restricted to abbreviations headings, and center-justify?
>>
>> Thanks a lot, nice.
>> Bruce
>>
>>
>> David L Carlson wrote:
>>>
>>> #1 You can remove the rownames by adding the argument
>>> include.rownames=FALSE to print.xtable():
>>>
>>> print.xtable(DECILE_TABLE, type="html",file="DecileTable.html",
>>> include.rownames=FALSE)
>>>
>>> #2 Prevent data.frame from converting the first column to a factor and
>>> use NAs for the columns where you don't want totals:
>>>
>>> dec_mean_wt_R_nRDL <- cbind(DECILE, dec_mean_wt_R_nRD, Cum_Lift,
>>> stringsAsFactors=FALSE)
>>> dec_mean_wt_R_nRDL <- dec_mean_wt_R_nRDL[,c(1,3,4,9,8,10)]
>>>
>>> total_line<-cbind(DECILE="Total",
>>>     as.data.frame(matrix(c(colSums(dec_mean_wt_R_nRDL[ , 2:3]), rep(NA,
>>> 3)),nrow=1)))
>>>
>>> Now the table should print without totals in the last three columns and
>>> no rownames.
>>>
>>> attach is discouraged since it can lead to confusion when a variable name
>>> exists in the environment and in a data frame (or multiple data frames). It
>>> is easy to forget which version of the variable you are using. More typing,
>>> but less subject to confusion would be to use with(), eg:
>>>
>>> Cum_RespRate          <- with(dec_mean_wt_R_nR, (Cum_R/Cum_n)*100)
>>>
>>> This way it is always clear where Cum_R and Cum_n are coming from. In
>>> your code cum_R = Cum_R and cum_n = Cum_n so you could also use
>>>
>>> Cum_RespRate          <- cum_R/cum_n)*100
>>>
>>> -------------------------------------
>>> David L Carlson
>>> Department of Anthropology
>>> Texas A&M University
>>> College Station, TX 77840-4352
>>>
>>> -----Original Message-----
>>> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of BR_email
>>> Sent: Thursday, April 20, 2017 12:10 PM
>>> To: r-help at r-project.org
>>> Subject: [R] Looking for a package to replace xtable
>>>
>>> R-helper:
>>> Below, code for generating a decile table.
>>> I am using the xtable package, but it is not quite right for the output.
>>> Issue #1. xtable inserts an unwanted column, before the first derived
>>> column DECILE
>>> Issue #2. In the last line "Total" I manually sum all columns, even
>>> though I only want the sums for second and third columns.
>>> If I calculate only second and third columns, the remaining columns
>>> would have NAs.
>>> Either scenario is not desired.
>>>
>>> Any suggestions, would be appreciated, for a package that addresses
>>> issue #1,
>>> and has an option for summing the desired two columns.
>>>
>>> Lastly, I read that one should rarely use "attach()", but if I don't the
>>> program will not run.
>>> An explanation of why I need attach() would also be appreciated.
>>> Thanks.
>>> Bruce
>>>
>>>     ****
>>> Response <- data.frame(Response=rbinom(50,1,0.2), yhat=runif(50))
>>> Response <- Response[order(Response$yhat,decreasing=TRUE),]
>>>
>>> Response[[2]] <- NULL
>>>
>>> cum_R    <- cumsum(Response)
>>> sam_size <- nrow(Response)
>>>
>>> cum_n    <- seq(1:1,sam_size)
>>> wt       <- rep(c(1), times=sam_size)
>>> cum_wt   <- cumsum(wt)
>>>
>>> dec      <- (cum_n/sam_size)
>>> decc     <- floor((cum_n*10)/(sam_size+1))
>>>
>>> dec_mean <- aggregate(Response, by=list(decc), mean)
>>>
>>> dd_        <- data.frame(cum_R, sam_size, cum_wt, cum_n, decc)
>>> dd  <- cbind(Response, dd_)
>>> names(dd)[2] <- "cum_R"
>>>
>>> dec_mean    <- aggregate(Response ~ decc, dd, mean)
>>>
>>> wt         <- rep(c(1), times=sam_size)
>>> cum_wt     <- aggregate(wt        ~ decc, dd, sum)
>>> cum_R      <- aggregate(Response  ~ decc, dd, sum)
>>>
>>> dec_mean_wt    <- cbind(dec_mean, cum_wt)
>>> dec_mean_wt    <- dec_mean_wt[-3]
>>>
>>> dec_mean_wt_R  <- cbind(dec_mean_wt, cum_R)
>>> dec_mean_wt_R  <- dec_mean_wt_R[-4]
>>>
>>> colnames(dec_mean_wt_R) <- c("Decile", "Resp_Rate", "No_Inds",
>>>        "No_Resp")
>>>
>>> dec_mean_wt_R  <- dec_mean_wt_R[,c(1,3,4,2)]
>>>
>>> cum_n        <- dec_mean_wt_R[2]
>>> cum_n        <- cumsum(cum_n)
>>>
>>> cum_R        <- dec_mean_wt_R[3]
>>> cum_R        <- cumsum(cum_R)
>>>
>>> dec_mean_wt_R_nR  <- cbind(dec_mean_wt_R, cum_n, cum_R)
>>>
>>> colnames(dec_mean_wt_R_nR) <-
>>>        c("Decile", "No_Inds", "No_Resp", "RespRate",
>>>                    "Cum_n", "Cum_R")
>>>
>>> dec_mean_wt_R_nR
>>>
>>> attach(dec_mean_wt_R_nR)
>>> Cum_RespRate          <- (Cum_R/Cum_n)*100
>>>
>>> options(digits=4)
>>> Decile_RespRate          <- (No_Resp/No_Inds)
>>>
>>> dec_mean_wt_R_nRD  <- cbind(dec_mean_wt_R_nR, Cum_RespRate,
>>> Decile_RespRate)
>>>
>>> avg_RR             <- dec_mean_wt_R_nRD[10,7]
>>> Cum_Lift           <- (Cum_RespRate/avg_RR)*100
>>>
>>> DECILE             <- c("top","2","3","4","5","6","7","8","9","bot")
>>> dec_mean_wt_R_nRDL <- cbind(DECILE, dec_mean_wt_R_nRD, Cum_Lift)
>>> dec_mean_wt_R_nRDL <- dec_mean_wt_R_nRDL[,c(1,3,4,9,8,10)]
>>>
>>> total_line<-cbind(DECILE="Total",
>>>     as.data.frame(matrix(colSums(dec_mean_wt_R_nRDL[-1]),nrow=1)))
>>>
>>> names(total_line)<-names(dec_mean_wt_R_nRDL)
>>> dec_mean_wt_R_nRDLT<-rbind(dec_mean_wt_R_nRDL,total_line)
>>> decile_table <- dec_mean_wt_R_nRDLT
>>> decile_table
>>>
>>> #Install the xtable package: install.packages("xtable")
>>> #Load the xtable package:
>>> library(xtable)
>>>
>>> DECILE_TABLE <-xtable(decile_table)
>>> DECILE_TABLE
>>>
>>> print.xtable(DECILE_TABLE, type="html",file="C:/R_Data/DecileTable.html")
>>>
>>> ****
>>>
>>> --
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>>
>>>
>>
>>
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list