刪除 R 中的物件名稱和暗名
Jesse John
2023年1月30日
-
使用
unname()
函式刪除 R 中的物件名稱和暗名 - 在可用時使用函式引數來刪除 R 中的物件名稱和暗名
-
使用
as.vector()
函式刪除 R 中的物件名稱和暗名 - 將 Names 和 Dimnames 設定為 NULL 以刪除 R 中的物件名稱和 Dimnames
- 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()
函式從資料框和小標題中刪除列名。但是,我們必須記住,列名在許多資料分析中很有幫助。
まとめ
我們看到了一些刪除物件名稱和暗名的不同方法。
根據我們正在使用的物件,我們可以選擇任何方便的選項來刪除這些屬性。
作者: Jesse John