data
參數在 R 中有許多函數都可以透過 data
參數來指定 data frame,例如線性回歸的 lm
:
M1 <- lm(GSI ~ factor(Location) + factor(Year), data = Squid)
第一個參數是指定線性回歸的模型,我們在這裡尚不討論這個部分,而第二個參數就是以 data
參數指定 data frame 為 Squid
,告知 R 迴歸模型中的變數是存在於這個 data frame 中。這種方式可以讓所有的資料都放在一個 data frame 中,除了方便管理之外,在資料變數很多的時候,也可以避免變數名稱互相衝突。
不過不是每一個常見的函數都支援 data
參數,例如 mean
就不支援:
mean(GSI, data = Squid)
這樣執行之後,就會產生錯誤:
Error in mean(GSI, data = Squid) : 找不到物件 'GSI'
通常我們可以查詢函數的線上手冊(help),來確認該函數使否有支援 data
參數,有些函數甚至在某些用法有支援,有些則沒有,例如 boxplot
就是這樣:
boxplot(GSI ~ factor(Location), data = Squid)
上面這行指令可以正常執行,不過換另外一種寫法,就會有問題:
boxplot(GSI, data = Squid)
執行這行指令會出現這樣的錯誤訊息:
Error in boxplot(GSI, data = Squid) : 找不到物件 'GSI'
基本上在函數有支援 data
參數的狀況下,使用 data
參數是最好的選擇,這樣可以讓命名空間比較乾淨一些。
$
)對於沒有支援 data
參數的函數,可以改用錢字號($
)的方式來取用 data frame 的變數:
Squid$GSI
輸出為
[1] 10.4432 9.8331 9.7356 9.3107 8.9926 [6] 8.7707 8.2576 7.4045 7.2156 6.8372 [11] 6.3882 6.3672 6.2998 6.0726 5.8395 [略]
在錢字號與變數名稱之間可以允許空白:
Squid $ GSI
但是習慣上不建議這樣寫,這樣看起來很奇怪。
另外也可以用指定欄位編號的方式來存取 data frame 中的變數,例如要取得 Squid
的第 6 欄:
Squid[, 6]
在實際使用時,不管哪一種方式都可以:
mean(Squid$GSI) mean(Squid[, 6])
不過建議是使用 Squid$GSI
,因為這種寫法比較清楚,經過一段時間之後若我們再回來看這個程式,Squid[, 6]
很容易讓人搞不清楚他到底是什麼,而 Squid$GSI
則是一看就知道他是什麼資料。
另外,還有另外一種寫法:
Squid[, "GSI"]
當 Squid$GSI
這種寫法無法使用時,就可以改用這種。