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