全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
12292 4
2009-07-18
看help和一些基本书籍中的介绍,看的晕晕乎乎,就是意识到使用attach(xxx)之后,xxx会出现在search()中的第二个位置,说这样的操作不会影响原先的dataframe里的数据(如果xxx是个df),请高手讲解下,这些东西实在没弄明白……
另外R导论(introduction的中文版)中后面的演示绘画有如下内容:
dummy <- data.frame(x=x, y= x + rnorm(x)*w)
dummy
创建一个由x 和y构成的双列数据框,查看它们
attach(dummy)
让数据框中的列项可以像一般的变量那样使用
上面这句话话什么意思……什么叫像一般变量使用,是说这里的搜索空间只是在这个dummy里了,然后引用他们的列就不用dummy$xxx这样的形式了?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-7-18 11:21:55
就是以后调用该数据不用输入dataframe的名字了吧,比如以前是dataframe$gdp,现在gdp就能调用了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-6-29 15:50:20
attach(df)就是使电脑知道你要分析的对象是这个数据框,那么这个数据框里面的变量就算有跟别的数据框重名的,电脑也知道你是在调用它的变量。同时你创建变量,电脑也知道你是在给这个数据框创建变量。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-6-29 19:52:48
个人理解:
attach()相当于把数据调入到内存中,作为默认的处理数据,比如现在要对salary中的y 和x1 x2作回归,那么可以
lm(y~x1+x2,data=salary)
如果之前谢了attach(salary),则可以简写为lm(y~x1+x2), 而不再用去说明其中的变量来自于那个数据集了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-6-29 22:54:19
这个,需了解全局变量和局域变量的概念。
当输入一个变量名时,R会在最上一级的路径中(一般是全局变量)搜索有没有这个变量,如没有,则给出出错信息,因为它没有在全局环境中搜索有这个变量。
数据框可以看成是一个封闭了其各列变量的局域环境,所以单输入一个数据框的列名,在全局环境中是搜不到这个列名的(因为被数据框这个封闭的局域环境阻隔了)。如要搜索到需要的列值,则要明确给出搜索路径,即dataframe$variable的形式。
但是每次都这样子给出完整路径很烦,所以为方便起见,需要用attach将数据框中的列变量释放为全局变量,这样在全局环境中就可以自由搜索了。但是这会带来另外一个问题,当全局环境中本来有一个同名的变量时,其会被新加入的数据框列变量屏蔽掉,造成意想不到的后果,所以在编程时一般不用attach.
至于detach,则是反向操作,又把封闭环境中的变量中从全局环境中释放掉,使其还原为局域变量状态。
attach一般须与detach对应。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群