这个
x <- list(12, 13)
names(y <- x) <- c("a", "b")
给出错误:
Error in names(y <- x) <- c("a", "b") : object 'y' not found
谁能解释一下为什么?
根据R的求值规则y <- x
应该在 names<- 的父框架内进行评估。所以y应该在全局环境中创建。
谢谢。
[更新] 如果对象 y
已经存在于全局环境中,则错误为:
Error in names(y <- x) <- c("a", "b") : could not find function "<-<-"
[update2] 这是我今天遇到的另一个结构。
(X <- matrix(0, nrow = 10, ncol = 10))[1:3] <- 3:5
Error during wrapup: object 'X' not found
最佳答案
这与<-
的方式有关递归地转换 LHS,附加 "<-"
到函数的名称以获得替换形式。第一个参数被特殊对待。注意最后两者的区别:
x <- a <- 1
`f<-` <- function(x, a, value) x
f(x, a <- 2) <- 2
f(x <- 2, a) <- 2
# Error in f(x <- 2, a) <- 2 : could not find function "<-<-"
对于您要执行的操作,我会使用 setNames
无论如何。
关于r - 在 names<-() 中创建对象会出错。如何解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943355/