2012-05-01 1 views
1

"d", "n", "beta", "family", "alpha"및 "value"라는 이름의 data.frame이 있습니다. Hmisc::latex으로 LaTeX 테이블을 만들고 싶습니다. 처음 세 개의 열에는 해당 행 이름을 나타내는 변수 "d", "n"및 "beta"가 있습니다. 다른 변수 ("family", "alpha")는 나머지 열에 표시되어야합니다 ("F1"및 "F2"- 가족 요소는 그룹을 정의하고,이 두 그룹 각각에 대해 다른 알파 값은 열을 정의하며, 전체적으로 2 * 3 = 6 열에 해당 "값"이 포함됩니다. 여기에 지금까지 무엇을 가지고 :Hmisc의 latex() : 예상대로 작동하지 않습니다. 가짜 빈 열; 그룹으로 그룹을 만드는 방법?

여기
## 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 
    ) 

내 질문은 다음과 같습니다

1) 왜 처음 세 개의 열에서 NAS의 공백으로 대체되지 않는() na.blank=TRUE의 경우해야으로는?

2) emtpy 네 번째 열이 삽입되는 이유는 무엇입니까?

3) "family"및 "alpha"변수를 위에서 설명한대로 그룹의 그룹으로 가져 오는 방법은 무엇입니까? 한편

업데이트, 나는 행렬에 data.frame을 변환 할 수 있었다. 난 단지 1

분명히는 TRUE na.blank = 단지 숫자 컬럼에 적용 질문에 대한 답변이 Hmisc: How to group column variables with latex()?

답변

1

, (더 구체적이기 때문에) 나는 그 여기에 게시, 그와 유사한 문제가 성격이나 요소가 아닙니다. 이것은 어디에도 문서화되어있는 것처럼 보이지 않지만이 아주 쉬운 예제에서 알게되었습니다.

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) 

코드를 실행하면 숫자 열의 NAs가 공백이되고 다른 열의 NAs는 "NA"가됩니다. 나는이 행동에 대한 이유를 모른다. 그러나 latex 명령을 실행하기 전에 문자 및 요소 열의 NA를 ""바꿔서 해결하는 것이 쉽습니다.

코드에서 처음 몇 개의 열은 요인이므로 위의 내용이 적용됩니다.

관련 문제