删除 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()
函数从数据框和小标题中删除列名。但是,我们必须记住,列名在许多数据分析中很有帮助。
结论
我们看到了一些删除对象名称和暗名的不同方法。
根据我们正在使用的对象,我们可以选择任何方便的选项来删除这些属性。
相关文章
R 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。