各种函数对tbl_df(dplyr使用的数据框类型)的反应很差

时间:2015-01-16 16:58:07

标签: r dplyr

我注意到各种功能对dplyr使用的类tbl_df反应不佳。我不知道如何预测何时会出现问题以及什么时候出现问题。转换为本机R数据帧总能解决问题,但这很烦人。有没有比根据需要转换为原生R数据帧更好的方法?

我的最新示例是使用xtable包:

> library(dplyr)
> library(nycflights13)
> library(xtable)
dplyr使用的

tbl_df

> flights
Source: local data frame [336,776 x 16]

   year month day dep_time dep_delay arr_time arr_delay carrier tailnum flight origin dest air_time distance hour minute
1  2013     1   1      517         2      830        11      UA  N14228   1545    EWR  IAH      227     1400    5     17
2  2013     1   1      533         4      850        20      UA  N24211   1714    LGA  IAH      227     1416    5     33
3  2013     1   1      542         2      923        33      AA  N619AA   1141    JFK  MIA      160     1089    5     42
4  2013     1   1      544        -1     1004       -18      B6  N804JB    725    JFK  BQN      183     1576    5     44
5  2013     1   1      554        -6      812       -25      DL  N668DN    461    LGA  ATL      116      762    5     54
6  2013     1   1      554        -4      740        12      UA  N39463   1696    EWR  ORD      150      719    5     54
7  2013     1   1      555        -5      913        19      B6  N516JB    507    EWR  FLL      158     1065    5     55
8  2013     1   1      557        -3      709       -14      EV  N829AS   5708    LGA  IAD       53      229    5     57
9  2013     1   1      557        -3      838        -8      B6  N593JB     79    JFK  MCO      140      944    5     57
10 2013     1   1      558        -2      753         8      AA  N3ALAA    301    LGA  ORD      138      733    5     58
..  ...   ... ...      ...       ...      ...       ...     ...     ...    ...    ...  ...      ...      ...  ...    ...

xtable失败:

> xtable(flights %>% head)
Error in .subset2(x, i, exact = exact) : subscript out of bounds

转换xtable之后很好:

> xtable(flights %>% head %>% data.frame)
% latex table generated in R 3.1.1 by xtable 1.7-3 package
% Fri Jan 16 08:53:55 2015
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrrrrllrllrrrr}
  \hline
 & year & month & day & dep\_time & dep\_delay & arr\_time & arr\_delay & carrier & tailnum & flight & origin & dest & air\_time & distance & hour & minute \\ 
  \hline
1 & 2013 &   1 &   1 & 517 & 2.00 & 830 & 11.00 & UA & N14228 & 1545 & EWR & IAH & 227.00 & 1400.00 & 5.00 & 17.00 \\ 
  2 & 2013 &   1 &   1 & 533 & 4.00 & 850 & 20.00 & UA & N24211 & 1714 & LGA & IAH & 227.00 & 1416.00 & 5.00 & 33.00 \\ 
  3 & 2013 &   1 &   1 & 542 & 2.00 & 923 & 33.00 & AA & N619AA & 1141 & JFK & MIA & 160.00 & 1089.00 & 5.00 & 42.00 \\ 
  4 & 2013 &   1 &   1 & 544 & -1.00 & 1004 & -18.00 & B6 & N804JB & 725 & JFK & BQN & 183.00 & 1576.00 & 5.00 & 44.00 \\ 
  5 & 2013 &   1 &   1 & 554 & -6.00 & 812 & -25.00 & DL & N668DN & 461 & LGA & ATL & 116.00 & 762.00 & 5.00 & 54.00 \\ 
  6 & 2013 &   1 &   1 & 554 & -4.00 & 740 & 12.00 & UA & N39463 & 1696 & EWR & ORD & 150.00 & 719.00 & 5.00 & 54.00 \\ 
   \hline
\end{tabular}
\end{table}

我使用的是dplyr 0.3.0.2。

1 个答案:

答案 0 :(得分:1)

这似乎不再是dplyr版本0.4.1(已经发布)的问题。