Как исправить ошибку: «данные» должны быть фреймом данных или другим объектом, управляемым с помощью «fortify()», а не числовым вектором.


Ошибка, с которой вы можете столкнуться в R:

 Error: `data` must be a data frame, or other object coercible by `fortify()`,
        not a digital vector

Эта ошибка возникает, когда вы пытаетесь использовать ggplot2 для построения переменных в фрейме данных, но в качестве аргумента данных вы ссылаетесь на вектор, а не на фрейм данных .

В этом руководстве объясняется, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8),
                 y=c(4, 8, 14, 19, 14, 13, 9, 9))

#view data frame
df

  xy
1 1 4
2 2 8
3 3 14
4 4 19
5 5 14
6 6 13
7 7 9
8 8 9

Теперь предположим, что мы пытаемся создать диаграмму рассеяния для визуализации переменных x и y во фрейме данных:

 library (ggplot2)

#attempt to create scatter plot
ggplot(df$x, aes(x=x, y=y)) +
    geom_point()

Error: `data` must be a data frame, or other object coercible by `fortify()`,
        not a digital vector

Мы получаем ошибку, потому что мы ссылались на числовой вектор ( df$x ) в аргументе данных функции ggplot() вместо фрейма данных.

Как исправить ошибку

Чтобы исправить эту ошибку, необходимо сослаться на фрейм данных для аргумента данных в функции ggplot() .

В нашем примере мы должны использовать df вместо df$x для аргумента данных :

 library (ggplot2)

#create scatterplot
ggplot(df, aes(x=x, y=y)) +
    geom_point()

Обратите внимание, что на этот раз нам удалось успешно создать облако точек без каких-либо ошибок.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранить другие распространенные ошибки в R:

Как исправить: ggplot2 не знает, как обрабатывать данные неравных классов
Как исправить: Ошибка в Stripchart.default(x1,…): Неверный метод построения графиков.
Как исправить: ошибка в eval (predvars, data, env): объект «x» не найден

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *