我想使用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在每行中打印完整的逻辑向量,而不是每行只打印一个元素。这对任何人都有意义,还是我忽略了一些明显的东西?
答案 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)。