軌道
/
R
R
/
課程大綱
/
名稱屬性
名稱

名稱屬性 在 R

1 個練習

關於 名稱屬性

向量可以具有具名元素,這有時讓它們用起來更方便。

建立

有三種方法可以為向量加上名稱。

  1. 建立向量時
> work_days <- c(Mon = TRUE, Tue = TRUE, Wed = TRUE, Thu = TRUE, Fri = TRUE, Sat = FALSE, Sun = FALSE)
> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
  1. 將字元向量指定给names()
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> names(months) <- month.abb
> months
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
 31  28  31  30  31  30  31  31  30  31  30  31 
  1. 使用setNames()
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> setNames(months, month.name)
  January  February     March     April       May      June      July    August September   October  November  December 
       31        28        31        30        31        30        31        31        30        31        30        31 

移除

如果不再需要名稱,可以將它們設定為NULL來移除。

> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
> names(work_days) <- NULL
> work_days
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

unname() 函式可以達到相同效果,而且或許更能清楚表達你的意圖。

使用名稱

names() 函式可以取得名稱,也可以設定名稱。

> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"

名稱可以代替位置索引使用,在這種情況下需要加上引號。

> months[c("Jul", "Aug")]
Jul Aug 
 31  31 

為了讓這類索引正確運作,最好確保名稱是唯一且非缺失的。然而,R 並不強制要求唯一性。

一般的向量操作仍然有效,而且如果合理的話,名稱通常會被保留。

> months[months == 30]
Apr Jun Sep Nov 
 30  30  30  30 

> sum(months)
[1] 365  # no meaningful names possible

更進階的主題

許多 R 物件,包括vectors,可以附加任意屬性。names屬性只是其中一個例子,不過是特別常見且重要的一個。

實際上,名稱對向量有時很有用,但很少是必要的。

names-attribute對於更複雜的結構,例如lists和dataframes,會變得重要得多,我們將在未來的概念中看到。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 名稱屬性