创建包含逻辑值的data.frame的xtable

时间:2011-09-29 00:54:55

标签: r

我想使用xtable显示一个包含两个具有逻辑值的向量的简单数据框:

ia = c(TRUE, TRUE, FALSE)
ib = c(FALSE, TRUE, TRUE)
i.df = data.frame(ia, ib)
xtable(i.df)

这会产生:

\begin{table}[ht]
\begin{center}
\begin{tabular}{rll}
  \hline
 & ia & ib \\ 
  \hline
1 & c(TRUE, TRUE, FALSE) & c(FALSE, TRUE, TRUE) \\ 
  2 & c(FALSE, TRUE, TRUE) & c(TRUE, TRUE, FALSE) \\ 
  3 & c(TRUE, TRUE, FALSE) & c(FALSE, TRUE, TRUE) \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

但是,我原以为:

\begin{table}[ht]
\begin{center}
\begin{tabular}{rll}
  \hline
 & ia & ib \\ 
  \hline
1 & TRUE & FALSE \\ 
  2 & TRUE & TRUE \\ 
  3 & FALSE & FALSE \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

由于某种原因,xtable在每行中打印完整的逻辑向量,而不是每行只打印一个元素。这对任何人都有意义,还是我忽略了一些明显的东西?

1 个答案:

答案 0 :(得分:3)

这对我来说感觉像个错误。 xtable.data.frame中的相关行是:

logicals <- unlist(lapply(x, is.logical))
x[, logicals] <- as.character(x[, logicals])

这不是我如何强迫性格。我可能会做更多的事情:

x[,logicals] <- lapply(x[,logicals],as.character)

我会考虑联系包裹作者。与此同时,您可以尝试事先将逻辑列转换为字符,因为这可能会在此期间解决问题。

修改

下面罗马的评论提醒我,如果只有一个逻辑列,我的建议修复将无效,因为默认情况下会删除维度。应该是:

x[,logicals] <- lapply(x[,logicals,drop = FALSE],as.character)

我已经联系了包维护者(2012-04-22)。