2016-03-08 3 views
2

Я начинаю с R, идущим по учебнику ggplot2, и что-то привлекло мое внимание как причудливое при использовании набора данных mtcars.ggplot2 с mtcars: Как он знает класс автомобиля?

Для примера рассмотрим следующее:

>library(ggplot2) 
>g<-ggplot(mpg, aes(class)) + geom_bar() 
>g 

Я не могу понять, почему это работает. Это явно делает сюжет с подсчетами каждого класса автомобилей (2-х местный, компактный, средний, минивэн, пикап, субкомпакт, сув).

Мой вопрос: как R/ggplot знает, на каких классах эти автомобили? Там нет переменной в data.frame mtcars, который описывает это:

>mtcars$class 
NULL 

Это что-то просто встроенный в пакет ggplot?

+0

try with 'mpg $ class' – HubertL

+2

Вы используете фрейм-фрейм' mpg' в своем коде 'ggplot', а не в фрейме данных' mtcars'. Фрейм данных «mpg» встроен в пакет ggplot2 (запустите 'data (package =" ggplot2 ")'), а фрейм данных 'mtcars' включен в базу R. – eipi10

+1

@ eipi10 ваш комментарий является ответом, и он должен быть размещен как таковой. – mnel

ответ

1

Вы используете фрейм данныхв коде ggplot, а не в кадре данных mtcars. Ваш код:

ggplot(mpg, aes(class)) + geom_bar() 

mpg является аргументом данных. Но если вы смените

ggplot(mtcars, aes(class)) + geom_bar() 

вы получите сообщение об ошибке, потому что фрейм mtcars данных не имеет столбец под названием class.

Рамка данных mpg встроена в пакет ggplot2. Запустите data(package="ggplot2"), чтобы узнать, какие наборы данных поставляются с ggplot2. Кадр данных mtcars включен в базу R. Запустите data(), чтобы просмотреть наборы данных, доступные из всех загруженных пакетов.

+0

Ах, не могу поверить, что я пропустил что-то настолько простое. Огромное спасибо! – MicroSD

Смежные вопросы