gpt4 book ai didi

r - colnames 函数如何分配新的列名?

转载 作者:行者123 更新时间:2023-12-02 06:00:37 34 4
gpt4 key购买 nike

我已经多次使用此功能,但直到现在才想到“它为什么有效?”。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>

问: 我看不出这是如何将新列名称分配给数据框的。

最佳答案

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?

关于r - colnames 函数如何分配新的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58494640/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com