Ste*_*e S 21
它们对于data.frames是否相同?是
它们一般是一样的吗?不完全 - 最大的区别是colnames也适用于矩阵,而名称不适用(只是数据帧).
此外,您可以使用名称来设置/获取向量的名称(并且,由于显而易见的原因,您无法使用colnames执行此操作 - 结果为NULL以获取和设置错误).
如果你看一下colnames 和colnames<- 函数源代码的开头:
R> colnames
function (x, do.NULL = TRUE, prefix = "col")
{
if (is.data.frame(x) && do.NULL)
return(names(x))
(...)
R> `colnames<-`
function (x, value)
{
if (is.data.frame(x)) {
names(x) <- value
}
(...)
Run Code Online (Sandbox Code Playgroud)
您可以看到,对于数据框,colnames只需调用该names函数即可.所以是的,它们完全相同.
小智 6
names()创建名称属性,只需colnames()命名列即可。
IE
创建一个临时变量。
> temp <- rbind(cbind(1,2,3,4,5),
+ cbind(6,7,8,9,10))
> temp
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
创建names.temp对象。
> names.temp <- temp
Run Code Online (Sandbox Code Playgroud)
使用names()于names.temp
> names(names.temp) <- paste(c("First col", "Second col", "Third col",
"Fourth Col", "Fifth col"))
> names.temp
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
attr(,"names")
[1] "First col" "Second col" "Third col" "Fourth Col" "Fifth col"
NA NA NA
[9] NA NA
Run Code Online (Sandbox Code Playgroud)
我们在这里看到我们实际上可以调用 中的第五个名称属性names.temp。
> names(names.temp)[5]
[1] "Fifth col"
Run Code Online (Sandbox Code Playgroud)
对第二个对象重复此操作,但这次创建该colnames.temp对象。
> colnames.temp <- temp
Run Code Online (Sandbox Code Playgroud)
使用colnames()于colnames.temp
> colnames(colnames.temp) <- paste(c("First col", "Second col", "Third col",
"Fourth Col", "Fifth col"))
> colnames.temp
First col Second col Third col Fourth Col Fifth col
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
现在 name 属性为 NULL。
> names(colnames.temp)[5]
NULL
Run Code Online (Sandbox Code Playgroud)
最后。让我们看看我们值得信赖的str()命令。我们可以看到和之间存在结构性差异。具体来说,有属性而不是属性。names.tempcolnames.tempcolnames.tempdimnamesnames
> str(names.temp)
num [1:2, 1:5] 1 6 2 7 3 8 4 9 5 10
- attr(*, "names")= chr [1:10] "First col" "Second col" "Thrid col" "Fourth
Col" ...
> str(colnames.temp)
num [1:2, 1:5] 1 6 2 7 3 8 4 9 5 10
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "First col" "Second col" "Thrid col" "Fourth Col" ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8515 次 |
| 最近记录: |