gpt4 book ai didi

R 范围 : disallow global variables in function

转载 作者:行者123 更新时间:2023-12-02 08:51:39 26 4
gpt4 key购买 nike

如果在 R 函数中使用全局变量,是否有任何方法可以引发警告(并失败......)?我认为这更省钱,可以防止意外行为......例如

sUm <- 10
sum <- function(x,y){
sum = x+y
return(sUm)
}

由于 return 中的“拼写错误”,该函数将始终返回 10。它应该失败,而不是返回 sUm 的值。

最佳答案

我的另一个答案更多的是关于你可以在函数中采取什么方法。现在,我将提供一些有关定义函数后应执行的操作的见解。

为了确保您的函数没有在不应该使用的时候使用全局变量,请使用 codetools包。

library(codetools)

sUm <- 10
f <- function(x, y) {
sum = x + y
return(sUm)
}

checkUsage(f)

这将打印消息:

<anonymous> local variable ‘sum’ assigned but may not be used (:1)

要查看函数中是否使用了任何全局变量,您可以比较 findGlobals() 的输出函数与全局环境中的变量一起使用。

> findGlobals(f)
[1] "{" "+" "=" "return" "sUm"

> intersect(findGlobals(f), ls(envir=.GlobalEnv))
[1] "sUm"

这告诉你全局变量 sUm里面用过f()当它可能不应该的时候。

关于R 范围 : disallow global variables in function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970939/

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