#r #ggplot2
#r #ggplot2
Вопрос:
Я хотел бы использовать R для случайного построения распределения хи-квадрат со степенью свободы 5 при 100 наблюдениях. После этого я хочу вычислить среднее значение этих наблюдений и использовать ggplot2 для построения распределения хи-квадрат с помощью гистограммы. Ниже приведен мой код:
rm(list = ls())
library(ggplot2)
set.seed(9487)
###Step_1###
x_100 <-data.frame(rchisq(100, 5, ncp = FALSE))
###Step_2###
mean_x <- mean(x_100[,1])
class(x_100)
###Step_3###
plot_x_100 <- ggplot(data = x_100, aes(x = x_100))
geom_bar()
plot_x_100
Во-первых, я создаю фрейм данных случайного распределения хи-квадрат с df = 5, obs = 100.
Во-вторых, я вычисляю среднее значение этого распределения хи-квадрат.
Наконец, я строю график с помощью пакета ggplot2.
Тем не менее, я получаю результат следующим образом:
Don't know how to automatically pick scale for object of type data.frame. Defaulting to continuous.
Error in is.finite(x) : default method not implemented for type 'list'
Я застрял в этой проблеме на несколько часов и не могу найти ни одного списка в моей глобальной среде. Буду признателен, если кто-нибудь сможет мне помочь и дать мне несколько предложений.
Комментарии:
1. Ошибка заключается в том, что вы передаете весь data.frame в эстетику x вместо столбца данных. Я бы сначала обозначил столбец в x_100 (
x_100 = data.frame(x_col = rchisq(100, 5, ncp = FALSE))
). Затем измените значениеaes
наaes(x=x_col)
. И если вам просто нужна гистограмма, вы можете попробоватьgeom_histogram
вместоgeom_bar
Ответ №1:
Проблема в том, что внутри ggplot
функции вы вызываете тот же фрейм данных (x_100), что и данные, и переменная x внутри aes
. Помните, что в ggplot внутри aes
вы должны указать имя столбца, который вы хотите отобразить. Кроме того, если вы хотите построить распределение хи-квадрат, я думаю, что было бы лучше использовать geom_histogram
вместо geom_bar
, поскольку первый группирует наблюдения в ячейки.
library(ggplot2)
# Rename the only column of your data frame as "value"
colnames(x_100) <- "value"
plot_x_100 <- ggplot(data = x_100, aes(x = value))
geom_histogram(bins = 20)
Комментарии:
1. Спасибо, что помогли мне! Это дает мне больше информации о ggplot2 и фрейме данных. Еще раз, СПАСИБО!