R 變數與資料的管理

R 的 attach 函數

如果您不想要在每次使用變數時,都輸入 Squid$GSI 這樣累贅的名稱,我們可以使用 attach 函數將 Squid 納入 R 的搜尋路徑,這樣我們就可以直接使用 Squid 裡面的所有變數:

attach(Squid)
GSI

這時候任何函數也都可以直接取用這些變數:

boxplot(GSI)
mean(GSI)

雖然 attach 看起來很方便,但是如果要 attach 的變數名稱已經事先存在於全域變數中的話,就會產生問題,或是同時 attach 兩個有同樣變數名稱的 data frame 的話也會出問題,另外 attach 的變數名稱亦不可以跟既有的 R 關鍵字或是函數名稱相同(例如變數名稱如果取為 time,就會與 time 函數衝突),如果發生名稱衝突的問題時,您會發現 R 可能不會如您預期的那樣存取指定的變數資料。

如果要將特定的 data frame 從搜尋路徑中移除,可以使用 detach

detach(Squid)

如果您一次只需要使用一個 data frame,並且小心運用 attachdetach,它會是一個很方便的功能,不過只限於研究與測試的情況,若要撰寫指令稿、發展正式的程式專案時,建議還是盡量避免這樣使用,以免未來城市結構變複雜時,發生變數名稱衝突的問題。

以下是 attach 使用上需要注意的重點整理:

  1. 不要重複執行 attach(Squid),以免變數名稱重複。
  2. 確保變數名稱都有一定的獨特性,盡量避免太過於一般性的名稱,例如 MonthLocation
  3. 如果需要 attach 多個 data frame,但是一次只使用到一個 data frame,那麼建議將沒有用到的 data frame 先行 detach

Exercise 1
BirdFlu.xls 這個檔案中記錄了數個國家 H5N1 禽流感的年度確診病例,這些資料是由各個國家回報給世界衛生組織(WHO)後所統計出來的,請依下列步驟分析這些資料:

  1. 將這些資料以 read.table 讀進 R 中。
  2. 使用 namesstr 檢查資料。
  3. 列出 2003 年各國的確診病例數目。
  4. 計算 2003 年與 2005 年確診病例總數。
  5. 計算 China 與 Turkey 的確診病例總數。
R

2 留言

  1. 山崎退

    新手發問~~小弟沒有資訊背景,剛接觸R不久
    請問文章開頭的資料檔squid.txt是需自行建立嗎?
    或者是有載點可下載
    蠻希望跟著板主的文章來練習
    若有不妥還請包涵~~感謝!

    • G. T. Wang

      是我忘記放下載連結,真是抱歉!

      我已經將下載連結放在文章中了,如果還有其他問題請再跟我說,謝謝您。

Comments are Closed