Ответ 1
Здесь (сейчас) способ переопределить ширину столбцов, которые распечатываются. Если вы запустите эту команду, все будет хорошо
options(dplyr.width = Inf)
Я написал его здесь.
Когда у меня есть столбец в локальном фрейме данных, иногда я получаю сообщение Variables not shown
, например, этот (нелепый) пример, которому достаточно всего столбцов.
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 Nightmare 2 0 0 5
10 1919 53.461538 When the Clouds Roll by 17 2 2 29
.. ... ... ... ... ... ... ...
Variables not shown: Year1 (dbl)
Я хочу видеть Year1
! Как увидеть все столбцы, желательно по умолчанию.
Здесь (сейчас) способ переопределить ширину столбцов, которые распечатываются. Если вы запустите эту команду, все будет хорошо
options(dplyr.width = Inf)
Я написал его здесь.
Вам может понравиться 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
dplyr
имеет собственные функции печати для объектов dplyr
. В этом случае объектом, являющимся результатом вашей операции, является tbl_df
. Соответствующая функция печати тогда dplyr:::print.tbl_df
. Это показывает, что trunc_mat
является функцией, ответственной за то, что напечатано, а не, включая переменные.
К сожалению, dplyr:::print.tbl_df
не передает никаких параметров в trunc_mat
, а trunc_mat
также не поддерживает выбор переменных (только количество строк). Обходным путем является вывод результата dplyr в 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
Итак, это немного устарело, но я нашел это, когда искал ответы на одну и ту же проблему. Я придумал это решение, которое соответствует духу трубопровода, но идентично функции принятого ответа (обратите внимание, что символ трубы %.%
устарел в пользу %>%
)
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
movies %.% group_by(year) %.% ....... %.% print.default
dplyr
использует вместо опции печати по умолчанию dplyr:::print.tbl_df
, чтобы убедиться, что ваш экран не перегружен огромными наборами данных. Когда вы, наконец, уничтожили свои вещи так, как хотите, и не хотите, чтобы вас больше не спасли от ваших собственных ошибок, просто нажмите print.default
, чтобы выплевывать все.
BTW, methods(print)
показывает, сколько пакетов необходимо написать свои собственные функции print
(подумайте, например, igraph
или xts
), это новые типы данных, поэтому вам нужно рассказать им, как для отображения на экране).
HTH следующий googler.