R Hmisc&x27;s latex():na.空白未按预期工作;伪空列;如何获取列中的组?

R Hmisc&x27;s latex():na.空白未按预期工作;伪空列;如何获取列中的组?,r,R,我有一个名为“d”、“n”、“beta”、“family”、“alpha”和“value”的data.frame。我想用Hmisc::LaTeX创建一个LaTeX表,其中前三列包含变量“d”、“n”和“beta”,它们给出了相应的行名。其他变量(“族”、“alpha”)应显示在其余列中(“F1”和“F2”——族的元素——中的每一个定义了一个组;对于这两个组中的每一个,alpha的不同值定义了列;总的来说,有2*3=6列包含相应的“值”)。以下是我到目前为止的情况: ## running para

我有一个名为“d”、“n”、“beta”、“family”、“alpha”和“value”的data.frame。我想用
Hmisc::LaTeX
创建一个LaTeX表,其中前三列包含变量“d”、“n”和“beta”,它们给出了相应的行名。其他变量(“族”、“alpha”)应显示在其余列中(“F1”和“F2”——族的元素——中的每一个定义了一个组;对于这两个组中的每一个,alpha的不同值定义了列;总的来说,有2*3=6列包含相应的“值”)。以下是我到目前为止的情况:

## running parameters
nn <- length(n <- c(100, 500)) # sample sizes
nd <- length(d <- c(10, 100, 1000)) # dimensions
nfamily <- length(family <- c("F1", "F2")) # families
nbeta <- length(beta <- c(0.25, 0.75)) # betas
nalpha <- length(alpha <- c(0.95, 0.99, 0.999)) # alphas

## create array containing the results
res <- array(NA, dim=c(nn, nd, nfamily, nbeta, nalpha),
             dimnames=list(n=n, d=d, family=family, beta=beta, alpha=alpha))
set.seed(1)
for(i in 1:nn){
    for(j in 1:nd){
        for(k in 1:nfamily){
            for(l in 1:nbeta){
                for(m in 1:nalpha){
                    res[i,j,k,l,m] <- i+j+k+l+m+runif(1) # some dummy values
                }
            }
        }
    }
}

## create a data.frame from the array of values
df <- as.data.frame.table(res, responseName="value")

## sort it according to the variables you want to display in the rows and bring the
## corresponding columns to the front/beginning
row.vars <- c("d", "n", "beta") # specify row variables
df. <- df[with(df, do.call(order, sapply(row.vars, as.name))), # sort rows
          c(row.vars, setdiff(names(df), row.vars))] # sort colums

## format numbers, set unwanted row names to NA
df.. <- df.
df..$value <- formatC(df.$value, digits=3, format="f")
names2NA <- function(x) {x[c(FALSE, x[-1]==x[-length(x)])] <- NA; x} # arg = TRUE <=> entry equal to previous one
for(j in 1:length(row.vars)) df..[, row.vars[j]] <- names2NA(df..[, row.vars[j]])

## now use Hmisc's latex()
require(Hmisc)
latex(df.., title="title",
      file="",
      label="tab:res",
      cgroup=c("family", "alpha"),
      na.blank=TRUE, # use blanks rather than NA => not working (see first columns)!
      rowname=NULL,
      colheads=c("Family", "alpha"), # character() specifying column headings
      dcolumn=TRUE,
      booktabs=TRUE,
      caption="My table containing all results.",
      caption.loc="bottom",
      collabel.just=rep("c", 2),
      where="htbp",
      center="centering",
      type="verbatim",
      helvetica=FALSE
      )
运行参数
nn我对问题1只有一个答案

显然,na.blank=TRUE只适用于数字列,而不适用于字符或因子。这似乎在任何地方都没有记录,但我在这个非常简单的例子中发现了

x <- data.frame(c(1, NA, NA), c("cow", NA, NA), factor(c("chicken", NA, NA)))
names(x) <- c("numeric", "character", "factor")
library(Hmisc)
latex(x, file = '', na.blank = TRUE)

x我只有问题1的答案

显然,na.blank=TRUE只适用于数字列,而不适用于字符或因子。这似乎在任何地方都没有记录,但我在这个非常简单的例子中发现了

x <- data.frame(c(1, NA, NA), c("cow", NA, NA), factor(c("chicken", NA, NA)))
names(x) <- c("numeric", "character", "factor")
library(Hmisc)
latex(x, file = '', na.blank = TRUE)
x