gpt4 book ai didi

c - R 中的作用域是如何完成的

转载 作者:太空狗 更新时间:2023-10-29 15:05:27 25 4
gpt4 key购买 nike

RC 都有词法作用域。因此,假设全局作用域为空,在 C 中,以下代码将不起作用:

int aux(int arg) {
if (arg > 0) {
int result = 1;
} else {
int result = 0;
}
return result;
}

R 中,以下代码:

aux <- function(arg) {
if (arg > 0) {
result = 1
} else {
result = 0
}
return(result)
}

正常工作。谁能告诉我 RC 之间的作用域有何不同,这使得这两个函数的行为不同?

最佳答案

在 R 中,if 条件后的表达式在封闭环境中计算:

if (TRUE) environment()
#<environment: R_GlobalEnv>

(令人惊讶的是,我找不到与此相关的文档。)


您可以使用 local 更改它:

aux <- function(arg) {
if (arg > 0) {
local({result <- 1})
} else {
local({result <- 0})
}
return(result)
}

aux(1)
#Error in aux(1) : object 'result' not found

关于c - R 中的作用域是如何完成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981924/

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