分類: R

R 變數與資料的管理

R 函數的 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 這種寫法無法使用時,就可以改用這種。

Page: 1 2 3 4 5 6 7 8 9

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

3 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

3 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

3 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

3 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

3 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

3 年 ago