• R语言
  • 关于mtcars数据集出错的问题

问题描述:

1在某文档的实例中有如下代码

heatmap(as.matrix(mtcars),

Rowv=NA,

Colv=NA,

col = heat.colors(256),

scale="column",

margins=c(2,8),

main = "Car characteristics by Model")

运行后出现如下错误

错误于heatmap(as.matrix(mtcars), Rowv = NA, Colv = NA, col = heat.colors(256), :

'x'必需为数值矩阵

2在中文版《ggplot2:数据分析与图形艺术》艺术的P64页有如下代码

p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + geom_point()

mtcars <- transform(mtcars, mpg = mpg^2)

p %+% mtcars

(英文版中代码也是如此)

在R中运行后如下

p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + geom_point()

错误: ggplot2 doesn't know how to deal with data of class list

P

错误: 找不到对象'P'

mtcars <- transform(mtcars, mpg = mpg^2)

p %+% mtcars

错误于eval(expr, envir, enclos) : 找不到对象'sleep_rem'

# 其中表达式p %+% mtcars,表示对已经绘图的数据集修改,添加新的数据库再让它绘图,运算符号是%+%

综合两个问题,应该是mtcars的数据类型的原因?但是问题1中已经使用as.matrix还是出错了,请问是怎么回事?

已经在论坛和百度里查找,没发现有人提出类似错误,请前辈指点

万谢!

矩阵需要变量是同类型的,所以你直接转矩阵肯定会出错,

至于你说的ggplot会出错,我试了下 ,没有错误

回复 第2楼 的 zailushang:感谢您的恢复,找您的意思,第一例应该是那个课件代码有问题。第二例,我刚才试了下,直接打开R,输入

library(ggplot2)

p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + geom_point()

enter后就出现

错误: ggplot2 doesn't know how to deal with data of class list

您说没错误,我也不知道怎么会这样,您给看看?

不能重现你说的错误。

你试试先rm(mtcars),再重新运行一遍code。

回复 第5楼 的 Torenable:太感谢你了!!!为什么删除mtcars运行代码后就可以了呢?难道我之前定义过?我是重新打开R运行那段代码出错的,然后remove后再运行就好了。

回复 第6楼 的 xuanyanyu:因为需要用到的是 package:datasets 中的 mtcars,你大概在 .GlobalEnv 也有一个名为 mtcars 但实则有所区别的变量(重新打开R缺省会被自动载入),所以需要先把后者删掉。

2 个月 后

回复 第7楼 的 yanlinlin82:感谢您专业的恢复,请问重新打开R缺省会被自动载入能举个具体易懂的例子吗?然后我们平常定义变量的时候,应该注意点什么?