Переопределение "Переменные не показаны" в dplyr, чтобы отобразить все столбцы из df
Когда у меня есть столбец в локальном фрейме данных, иногда я получаю сообщение 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's Nightmare 2 0 0 5
10 1919 53.461538 When the Clouds Roll by 17 2 2 29
.. ... ... ... ... ... ... ...
Variables not shown: Year1 (dbl)
Я хочу увидеть Year1
! Как мне увидеть все столбцы, желательно по умолчанию.
5 ответов
Есть (сейчас) способ переопределить ширину столбцов, которые выводятся на печать. Если вы запустите эту команду, все будет хорошо
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
в конце выкладывать все.
КСТАТИ, methods(print)
показывает, сколько пакетов нужно написать самостоятельно print
функции (подумайте, например, igraph
или же xts
--- это новые типы данных, поэтому вам необходимо указать, как их отображать на экране).
HTH следующий гуглер.