将变量从数据集设置到全局环境,以便可以自由使用变量

时间:2016-09-21 21:37:38

标签: r

所以,我使用的是一个内置在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位于全局环境中?如果是这样,我该怎么做?

2 个答案:

答案 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)"))