colnames 函数如何分配新的列名?
How does colnames function assign new column names?
我已经用了很多次这个功能,但现在才想到 'why does it work?'。
R 的 colnames() 函数如何为数据框分配新的列名?
我的意思是我知道 colnames(df) 如何 return 数据框的列名。但是它怎么也分配新的呢?
aa <- mtcars
colnames(aa)
colnames(aa) <- LETTERS[1:ncol(aa)]
colnames(aa)
# ^ how can colnames function either return column names or assign new ones? It's just a function.
# but we can't change the number of columns this way:
ncol(aa)
ncol(aa) <- 10
目前 colnames 函数是:
function (x, do.NULL = TRUE, prefix = "col")
{
if (is.data.frame(x) && do.NULL)
return(names(x))
dn <- dimnames(x)
if (!is.null(dn[[2L]]))
dn[[2L]]
else {
nc <- NCOL(x)
if (do.NULL)
NULL
else if (nc > 0L)
paste0(prefix, seq_len(nc))
else character()
}
}
<bytecode: 0x00000000091f1710>
<environment: namespace:base>
问: 我看不出这是如何为数据框分配新的列名。
<-
左侧的 colnames
与右侧的功能不同。前者称为替换函数,名称为colnames<-
。
显示来源
您可以在 R 控制台输入以下内容来查看其代码:
`colnames<-`
显示的来源如下所示:
`colnames<-` <- function(x, value) { ...modify x...; x }
其中第一个参数 x
是指左侧的参数,第二个参数 , value
是 <-
的右侧。它们都是替换函数的输入,然后 R 将 运行 替换函数的结果分配回 x
.
替换函数的简单示例
例如,这里有一个简单的替换函数:
# define simple replacement function
`add_n<-` <- function(x, value) x + value
# test
my_number <- 4
add_n(my_number) <- 3
my_number
## [1] 7
更多信息
这里有一些替换函数的讨论:What are Replacement Functions in R?
我已经用了很多次这个功能,但现在才想到 'why does it work?'。 R 的 colnames() 函数如何为数据框分配新的列名? 我的意思是我知道 colnames(df) 如何 return 数据框的列名。但是它怎么也分配新的呢?
aa <- mtcars
colnames(aa)
colnames(aa) <- LETTERS[1:ncol(aa)]
colnames(aa)
# ^ how can colnames function either return column names or assign new ones? It's just a function.
# but we can't change the number of columns this way:
ncol(aa)
ncol(aa) <- 10
目前 colnames 函数是:
function (x, do.NULL = TRUE, prefix = "col")
{
if (is.data.frame(x) && do.NULL)
return(names(x))
dn <- dimnames(x)
if (!is.null(dn[[2L]]))
dn[[2L]]
else {
nc <- NCOL(x)
if (do.NULL)
NULL
else if (nc > 0L)
paste0(prefix, seq_len(nc))
else character()
}
}
<bytecode: 0x00000000091f1710>
<environment: namespace:base>
问: 我看不出这是如何为数据框分配新的列名。
<-
左侧的 colnames
与右侧的功能不同。前者称为替换函数,名称为colnames<-
。
显示来源
您可以在 R 控制台输入以下内容来查看其代码:
`colnames<-`
显示的来源如下所示:
`colnames<-` <- function(x, value) { ...modify x...; x }
其中第一个参数 x
是指左侧的参数,第二个参数 , value
是 <-
的右侧。它们都是替换函数的输入,然后 R 将 运行 替换函数的结果分配回 x
.
替换函数的简单示例
例如,这里有一个简单的替换函数:
# define simple replacement function
`add_n<-` <- function(x, value) x + value
# test
my_number <- 4
add_n(my_number) <- 3
my_number
## [1] 7
更多信息
这里有一些替换函数的讨论:What are Replacement Functions in R?