Создайте xtable таблицы data.frame, содержащей логические значения - PullRequest
3 голосов
/ 29 сентября 2011

Я хочу использовать 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 Ответ

3 голосов
/ 29 сентября 2011

Это похоже на ошибку для меня. Соответствующие строки в xtable.data.frame:

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

Это не то, как я делаю это принуждение к характеру. Я бы, наверное, сделал что-то более похожее на:

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

Я бы хотел связаться с автором пакета. В то же время вы можете сами попытаться преобразовать логические столбцы в символы, поскольку это, скорее всего, решит проблему за это время.

EDIT

Комментарий Романа, приведенный ниже, предупредил меня о том, что предложенное мной исправление не будет работать, если будет только один логический столбец, поскольку измерения по умолчанию отбрасываются. Это должно было быть:

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

Я связался с сопровождающим пакета по этому поводу (2012-04-22).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...