所以,我使用的是一个内置在R中的数据集,名为" mtcars"。我试图在变量之间进行相关性测试" MPG"和" HP"。到目前为止,这是我的代码......
data(mtcars,package = "datasets",envir = .GlobalEnv)
new_hp = log10(hp)
new_mpg = log10(mpg)
plot(new_hp,new_mpg,xlab = "Log10(Horsepower)",ylab = "Log10(MPG)")
abline(lm(new_mpg~new_hp))
cor.test(new_hp,new_mpg)
当我这样做时,控制台告诉我找不到变量HP和MPG(对象"变量名"未找到)。因此,由于没有定义的对象可以操作,所有后续代码都会失败。我是否需要使mtcars数据集中的变量HP和MPG位于全局环境中?如果是这样,我该怎么做?
答案 0 :(得分:1)
定义new_hp和new_mpg时,您没有引用数据集
这将有效:
new_hp = log10(mtcars$hp)
new_mpg = log10(mtcars$mpg)
答案 1 :(得分:1)
对于mtcars
等内置数据,通常无需显式调用data()
。如果您开始一个全新的R会话,只需在控制台上键入mtcars
,您就会看到数据。这是因为数据的(不是那么新的)延迟加载功能。
如果您在控制台上以交互方式工作并厌倦一遍又一遍地键入mtcars$
以引用特定列,那么一个好工具就是with
。
例如,您可以这样做:
with(mtcars,plot(log10(hp),log10(mpg),xlab = "Log10(Horsepower)",ylab = "Log10(MPG)"))
或者,您可以先添加转换后的版本,然后直接引用它们:
mtcars <- transform(mtcars,log_hp = log10(hp),log_mpg = log10(mpg))
with(mtcars,plot(log_hp,log_mpg,xlab = "Log10(Horsepower)",ylab = "Log10(MPG)"))