【发布时间】:2018-01-19 18:08:07
【问题描述】:
l1 <- list(a = 'FirstComponent', b= 'SecondComponent')
要将第一个组件从 a 重命名为 c,我可以这样做:
names(l1) <- c('c', 'b')
或者这个:
names(l1)[1] <- c('c')
但不是这个:
names(l1[1]) <- c('c')
也不是这样:
names(l1[[1]]) <- c('c')
为什么第三个和第四个代码示例不起作用?他们还尝试重命名 R 对象 l1[1] 和 l1[[1]]。幕后发生了什么?
=========以下是原问题的一部分===========
R 文档:可以通过一般规则仅更新部分名称属性:请参阅示例。这是有效的,因为那里的表达式被评估为
z <- "names<-"(z, "[<-"(names(z), 3, "c2"))。
"[<-"(names(z), 3, "c2")中names(z)的返回值作为参数传递给下一个函数,即"[<-"。
【问题讨论】:
-
对于你的第一个问题,一切都可以成为 R 中的一个函数,例如你可以分配像 this
"<-"(iris$new_var,1); head(iris)这样的变量 - (注意我用引号而不是反引号,因为在 cmets 中显示反引号很棘手) -
谢谢!发布问题后,我很快就弄清楚了。我将编辑我的问题,使其专注于第二个问题。
-
即使获取
names函数的源代码也是一项繁琐的任务!!!
标签: r function functional-programming return-value