colnames 函数如何分配新的列名?
Posted
技术标签:
【中文标题】colnames 函数如何分配新的列名?【英文标题】:How does colnames function assign new column names? 【发布时间】:2020-02-18 00:51:12 【问题描述】:我已经多次使用此功能,但现在才想到“为什么它有效?”。 R 的 colnames() 函数如何为数据框分配新的列名? 我的意思是我知道 colnames(df) 将如何返回数据框的列名。但是它又怎么能分配新的呢?
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>
问: 我看不出这是如何为数据框分配新列名的。
【问题讨论】:
***.com/questions/10449366/… 【参考方案1】:<-
左侧的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?
【讨论】:
以上是关于colnames 函数如何分配新的列名?的主要内容,如果未能解决你的问题,请参考以下文章