gpt4 book ai didi

r - 在 R 中,究竟是什么导致了名称(或符号)类型的对象被求值?

转载 作者:行者123 更新时间:2023-12-04 12:09:49 27 4
gpt4 key购买 nike

运行后:

x <- as.name("aa")
aa <- 2

在 R 中,为什么不
(x)

返回2?为什么不
x <- as.name("aa")
aa <- 3
get(get(x))

返回 3?

我知道 get() 需要一个字符串,但我不明白为什么它不计算 x,找到里面的字符串,然后得到它。在我看来,有时函数会对它们的参数进行这样的评估,有时则不会。例如,在第二个示例中,如果将 get(get(x)) 替换为 eval(x),则 eval() 会计算 x 以找到名称,然后计算名称以找到 3。

最佳答案

因为x的值不是 2,它是符号(或名称)aa .但是,如果您eval它:

> eval(x)
[1] 2

同样, get(x)根本不起作用(即产生错误),因为根据 get 的文档,它的第一个参数必须是 an object name (given as a character string) ,其中括号是为了将其与符号/名称区分开来。
get仅适用于字符参数:
 > get("aa")
[1] 2

还有一个 symbol (我发现它比 name 更容易混淆)不是一回事:
> identical("aa",as.name("aa"))
[1] FALSE

( as.nameas.symbol 做同样的事情。)

有关我在下面的评论中提到的“表达式求值”与“函数参数求值”区别的出色解释,请参阅@MrFlick 的回答。

关于r - 在 R 中,究竟是什么导致了名称(或符号)类型的对象被求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062490/

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