gpt4 book ai didi

r - 在 names<-() 中创建对象会出错。如何解释?

转载 作者:行者123 更新时间:2023-12-04 11:53:23 25 4
gpt4 key购买 nike

这个

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/

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