Невозможно нарисовать гистограмму, используя манипуляции с данными dplyr: 'x' должно быть числовым - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в использовании R для манипулирования данными, в частности, в dplyr, и я пытался написать строку кода для создания гистограммы, и это дает мне ошибку, что «x» должно быть числовым, но из того, что я могу сказать, «x»'является числовым.

Версия кода, который я пытаюсь запустить, выглядит следующим образом с соответствующей ошибкой:

mydata %>% filter(Type==1) %>% select(Amount) %>% hist()
Error in hist.default(.) : 'x' must be numeric

Если я изменяю это на коробочный график, как показано ниже, он работает отличноштраф:

mydata %>% filter(Type==1) %>% select(Amount) %>% boxplot()

Если я просто запустите:

mydata %>% filter(Type==1) %>% select(Amount)

Я получу результаты ниже, показывая значение в виде dbl:

# A tibble: 898 x 1
Amount
  <dbl>
 1 -1304.  
 2  -741.  
 3   -38.0 
 4    -1.13
 5     0.  
 6     0.  
 7     0.  
 8     0.  
 9     0.  
10     0.  
# ... with 888 more rows**strong text**

Кроме того, если язапустить следующий код Я получаю гистограмму, которую я ищу, но я не уверен, почему моя оригинальная строка кода не работает.

tmp <- mydata %>% filter(Type==1) %>% select(Amount)
hist(tmp$Amount)

Я уверен, что это что-то простое, что мне не хватает, но я подумалчто при использовании оператора select (Amount) это значение будет передано в функцию hist (), но этого не происходит.Странная часть для меня - я могу поменять его на коробочный сюжет, и он отлично работает.Есть идеи, что не так с моим исходным кодом?

1 Ответ

0 голосов
/ 07 мая 2018

С ?hist и ?boxplot, hist принимает числовой вектор в качестве данных, а boxplot может принимать как числовой вектор, так и списки.

Чтобы вернуть числовой вектор из конвейера, вы можете использовать pull, чтобы извлечь столбец как вектор, который затем может быть передан в hist для построения графика:

mydata %>% filter(Type==1) %>% pull(Amount) %>% hist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...