Nadpisanie "zmienne Nie pokazane" w dplyr, aby wyświetlić wszystkie kolumny z df

Kiedy mam kolumnę w lokalnej ramce danych, czasami dostaję komunikat Variables not shown taki jak ten (śmieszny) przykład po prostu potrzebował wystarczającej ilości kolumn.

library(dplyr)
library(ggplot2) # for movies

movies %.% 
 group_by(year) %.% 
 summarise(Length = mean(length), Title = max(title), 
  Dramaz = sum(Drama), Actionz = sum(Action), 
  Action = sum(Action), Comedyz = sum(Comedy)) %.% 
 mutate(Year1 = year + 1)

   year    Length                       Title Dramaz Actionz Action Comedyz
1  1898  1.000000 Pack Train at Chilkoot Pass      1       0      0       2
2  1894  1.000000           Sioux Ghost Dance      0       0      0       0
3  1902  3.555556     Voyage dans la lune, Le      1       0      0       2
4  1893  1.000000            Blacksmith Scene      0       0      0       0
5  1912 24.382353            Unseen Enemy, An     22       0      0       4
6  1922 74.192308      Trapped by the Mormons     20       0      0      16
7  1895  1.000000                 Photographe      0       0      0       0
8  1909  9.266667              What Drink Did     14       0      0       7
9  1900  1.437500      Uncle Josh's Nightmare      2       0      0       5
10 1919 53.461538     When the Clouds Roll by     17       2      2      29
..  ...       ...                         ...    ...     ...    ...     ...
Variables not shown: Year1 (dbl)
Chcę zobaczyć! Jak Mogę zobaczyć wszystkie kolumny, najlepiej domyślnie.
Author: smci, 2014-03-18

5 answers

Istnieje (teraz) sposób nadpisania szerokości kolumn, które zostaną wydrukowane. Jeśli uruchomisz to polecenie wszystko będzie dobrze

options(dplyr.width = Inf)

Napisałem to tutaj .

 50
Author: Mark Needham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-25 16:29:09

You might like glimpse:

> movies %>%
+  group_by(year) %>%
+  summarise(Length = mean(length), Title = max(title),
+   Dramaz = sum(Drama), Actionz = sum(Action),
+   Action = sum(Action), Comedyz = sum(Comedy)) %>%
+  mutate(Year1 = year + 1) %>% glimpse()
Variables:
$ year    (int) 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902,...
$ Length  (dbl) 1.000000, 1.000000, 1.000000, 1.307692, 1.000000, 1.000000,...
$ Title   (chr) "Blacksmith Scene", "Sioux Ghost Dance", "Photographe", "Ve...
$ Dramaz  (int) 0, 0, 0, 1, 0, 1, 2, 2, 5, 1, 2, 3, 4, 5, 1, 8, 14, 14, 14,...
$ Actionz (int) 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 3, 0, 0, 1, 0,...
$ Action  (int) 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 3, 0, 0, 1, 0,...
$ Comedyz (int) 0, 0, 0, 1, 2, 2, 1, 5, 8, 2, 8, 10, 6, 2, 6, 8, 7, 2, 2, 4...
$ Year1   (dbl) 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903,...NULL
 29
Author: Romain Francois,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-04 15:13:41

dplyr posiada własne funkcje drukowania dla obiektów dplyr. W tym przypadku obiektem, który jest wynikiem twojej operacji jest tbl_df. Pasującą funkcją drukowania jest wtedy dplyr:::print.tbl_df. To pokazuje, że trunc_mat jest funkcją odpowiedzialną za to, co jest drukowane, a nie, włączając w to, które zmienne.

Niestety, dplyr:::print.tbl_df nie przekazuje żadnych parametrów do trunc_mat i trunc_mat również nie obsługuje wyboru, które zmienne są wyświetlane (tylko ile wierszy). Obejście polega na oddaniu wyniku dplyr do data.frame head:

res = movies %.% 
 group_by(year) %.% 
 summarise(Length = mean(length), Title = max(title), 
  Dramaz = sum(Drama), Actionz = sum(Action), 
  Action = sum(Action), Comedyz = sum(Comedy)) %.% 
 mutate(Year1 = year + 1)

head(data.frame(res))
  year    Length                       Title Dramaz Actionz Action Comedyz
1 1898  1.000000 Pack Train at Chilkoot Pass      1       0      0       2
2 1894  1.000000           Sioux Ghost Dance      0       0      0       0
3 1902  3.555556     Voyage dans la lune, Le      1       0      0       2
4 1893  1.000000            Blacksmith Scene      0       0      0       0
5 1912 24.382353            Unseen Enemy, An     22       0      0       4
6 1922 74.192308      Trapped by the Mormons     20       0      0      16
  Year1
1  1899
2  1895
3  1903
4  1894
5  1913
6  1923
 8
Author: Paul Hiemstra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 05:50:59

Jest to trochę stare, ale znalazłem to, szukając odpowiedzi na ten sam problem. Wymyśliłem rozwiązanie, które trzyma się ducha orurowania, ale identyczne w funkcji do zaakceptowanej odpowiedzi (zauważ, że symbol rury %.% jest przestarzały na rzecz %>%)

movies %>% 
    group_by(year) %>% 
    summarise(Length = mean(length), Title = max(title), 
    Dramaz = sum(Drama), Actionz = sum(Action), 
    Action = sum(Action), Comedyz = sum(Comedy)) %>% 
    mutate(Year1 = year + 1) %>%
    as.data.frame %>%
    head
 1
Author: mpettis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-13 04:54:45

movies %.% group_by(year) %.% ....... %.% print.default

dplyr używa, zamiast domyślnej opcji drukowania, dplyr:::print.tbl_df, aby upewnić się, że ekran nie jest przeciążony ogromnymi zestawami danych. Kiedy w końcu zredukujesz swoje rzeczy do tego, czego chcesz i nie chcesz być już zbawiony przed własnymi błędami, po prostu trzymaj print.default na końcu, aby wypluć wszystko.


BTW, methods(print) pokazuje ile pakietów musi napisać własne funkcje print (pomyśl o np. igraph lub xts - - - są to nowe typy danych, więc musisz im powiedzieć jak do wyświetlenia na ekranie).

Następny googler.

 1
Author: isomorphismes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-01 04:31:31