刪除 R 中的物件名稱和暗名

Jesse John 2023年1月30日 2022年5月18日
  1. 使用 unname() 函式刪除 R 中的物件名稱和暗名
  2. 在可用時使用函式引數來刪除 R 中的物件名稱和暗名
  3. 使用 as.vector() 函式刪除 R 中的物件名稱和暗名
  4. 將 Names 和 Dimnames 設定為 NULL 以刪除 R 中的物件名稱和 Dimnames
  5. R 中資料框中的行名
  6. まとめ
刪除 R 中的物件名稱和暗名

當我們只需要值時,R 為我們提供了刪除名稱和暗名的選項。我們將在本文中演示其中一些選項。

使用 unname() 函式刪除 R 中的物件名稱和暗名

unname() 函式從物件中刪除名稱和暗名。

示例程式碼:

# Calculate the 25th percentile.
a = quantile(c(2, 4, 6, 8), probs=0.25)
a # Displays the name.

names(a) # 25% is the name.

# We can remove the name by using the unname() function.
unname(a)

輸出:

> # Calculate the 25th percentile.
> a = quantile(c(2, 4, 6, 8), probs=0.25)
> a # Displays the name.
25%
3.5
>
> names(a) # 25% is the name.
[1] "25%"
>
> # We can remove the name by using the unname() function.
> unname(a)
[1] 3.5

在可用時使用函式引數來刪除 R 中的物件名稱和暗名

一些函式允許我們建立沒有名字的物件。函式簽名會告訴我們是否可以跳過它的建立。

使用這樣的函式,我們可以直接建立沒有名字的物件。同樣,我們將採用 quantile(),因為它具有 names 引數。

示例程式碼:

# Calculate the 60th percentile. Use names = FALSE.
b = quantile(c(2, 4, 6, 8), probs=0.6, names = FALSE)
b # There is no name
names(b)

輸出:

> # Calculate the 60th percentile. Use names = FALSE.
> b = quantile(c(2, 4, 6, 8), probs=0.6, names = FALSE)
> b # There is no name
[1] 5.6
> names(b)
NULL

使用 as.vector() 函式刪除 R 中的物件名稱和暗名

手冊 R 簡介 的第 5.9 節指出,可以使用 as.vector() 將陣列強制轉換為簡單的向量物件。此操作會刪除名稱。

示例程式碼:

# The summary has meaningful names.
c = summary(c(2, 4, 6, 8))
c
# This is just for illustration of the technique.
# We can remove the names using the as.vector() function.
as.vector(c)

輸出:

> # The summary has meaningful names.
> c = summary(c(2, 4, 6, 8))
> c
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
    2.0     3.5     5.0     5.0     6.5     8.0
> # This is just for illustration of the technique.
> # We can remove the names using the as.vector() function.
> as.vector(c)
[1] 2.0 3.5 5.0 5.0 6.5 8.0

將 Names 和 Dimnames 設定為 NULL 以刪除 R 中的物件名稱和 Dimnames

由於可以分配名稱和暗名,我們可以將它們設定為 NULL。

示例程式碼:

# The summary has names.
d = summary(c(2, 4, 6, 8))
d
names(d)

# Set the names to NULL.
names(d) = NULL

# Now, there are no names.
d
names(d)

輸出:

> # The summary has names.
> d = summary(c(2, 4, 6, 8))
> d
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
    2.0     3.5     5.0     5.0     6.5     8.0
> names(d)
[1] "Min."    "1st Qu." "Median"  "Mean"    "3rd Qu." "Max."
>
> # Set the names to NULL.
> names(d) = NULL
>
> # Now there are no names.
> d
[1] 2.0 3.5 5.0 5.0 6.5 8.0
> names(d)
NULL

R 中資料框中的行名

如果我們在資料框上使用 dimnames(),我們會得到兩個列表。一個是 names,它給出了列名;另一個是 row.names

在 R 中,資料框具有行名。如果我們不指定行名,R 會自動給出行名。

行名不能設定為 NULL。這樣做會使 R 自動給出行名。

文件指出,當我們使用 force = TRUE 時,unname() 函式無法按預期工作。它會引發錯誤,至少在 R 版本 4.1.2 之前。

原因是無法通過將行名設定為 NULL 來刪除它們。

它也不適用於 dplyr 的 tibbles,因為它們是資料幀。Tibbles 不能手動分配行名,但它們有。

示例程式碼:

library(dplyr)
X = as_tibble(data.frame(x=c(1:5),y=c(11:15)))
X

# column names.
names(X)

# A tibble has automatic row names.
row.names(X)

輸出:

> library(dplyr)
> X = as_tibble(data.frame(x=c(1:5),y=c(11:15)))
> X
# A tibble: 5 x 2
      x     y
  <int> <int>
1     1    11
2     2    12
3     3    13
4     4    14
5     5    15
>
> # column names.
> names(X)
[1] "x" "y"
>
> # A tibble has automatic row names.
> row.names(X)
[1] "1" "2" "3" "4" "5"

可以使用 unname() 函式從資料框和小標題中刪除列名。但是,我們必須記住,列名在許多資料分析中很有幫助。

まとめ

我們看到了一些刪除物件名稱和暗名的不同方法。

根據我們正在使用的物件,我們可以選擇任何方便的選項來刪除這些屬性。

Author: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

相關文章 - R Object