2018-10-19
閱讀量:
2454
R語言中,attach與detach,及with的區(qū)別
問題描述
R語言中,對數據框中的數據的進行操作時,為了避免重復地鍵入對象名稱,可使用attach、detach或with。那么attach和with有什么區(qū)別呢?
解答
1、attach()是對what添加路徑索引,避免重復輸入what名稱。
attach(what, pos = 2L, name = deparse(substitute(what), backtick=FALSE), warn.conflicts = TRUE)
what:數據框或列表;
pos=2L:添加的路徑存儲的位置,一般默認即可。在對多個數據添加索引時,此位置會變成3L,4L,5L...detach()撤銷索引路徑時,會撤銷對應位置的索引儲存,具體例子見后;
name:不懂,遇見需要的情況再補充;
backtick=FALSE:反引號,經過測試,該參數固定為FALSE不可調,再調用索引時會用到;
warn.conflicts:是否打印警告。
2、detach()是撤銷attach()建立的路徑索引,常與attach()配合使用。
attach(onedata.frame)
The following objects are masked _by_ .GlobalEnv:
age, name
> age
[1] 20 30 40 50
> name
[1] "Zhangshan" "Lisi" "Wangwu" "Zhaoliu"
> detach(onedata.frame)
> name
錯誤: 找不到對象'name'
3、with()函數
with(data, expr, ...)
表達式,大括號{}之間的語句都只針對data執(zhí)行,但如果大括號中只有一句的話,則省略大括號。
>with(onedata.frame,{
name
})
[1] Zhangshan Lisi Wangwu Zhaoliu
Levels: Lisi Wangwu Zhangshan Zhaoliu
用with有個問題就是里面設置的變量在外部無法訪問:
> with(onedata.frame,{name1<-name})
> name1
錯誤: 找不到對象'name1'
解決辦法就是使用<<-賦值符號
> with(onedata.frame,{name1<<-name})
> name1
[1] Zhangshan Lisi Wangwu Zhaoliu
Levels: Lisi Wangwu Zhangshan Zhaoliu






評論(0)


暫無數據
推薦帖子
0條評論
0條評論
0條評論