t作为R中全局变量的名称:不可能?
我想使用t作为R中全局变量的名称,但它不允许我这样做t作为R中全局变量的名称:不可能?,r,binding,global-variables,R,Binding,Global Variables,我想使用t作为R中全局变量的名称,但它不允许我这样做 sq1=function() { t<<-7 } 如何克服这个问题?您是否尝试过首先在全局环境中重新定义t(如果您*真的需要使用这个名称,请再次说明) tt是基数R中的一个函数,用于转置矩阵。这就是它被锁定的原因 我建议您重新考虑使用全局变量。它会产生难以发现的错误,使代码更难理解。添加@hrbrmstr回答的内容,并显示一些输出 您可以通过首先在全局环境中将t定义为变量来解决此问题(但不推荐,因为t是一个基本函数),然后使
sq1=function() {
t<<-7
}
如何克服这个问题?您是否尝试过首先在全局环境中重新定义
t
(如果您*真的需要使用这个名称,请再次说明)
tt
是基数R中的一个函数,用于转置矩阵。这就是它被锁定的原因
我建议您重新考虑使用全局变量。它会产生难以发现的错误,使代码更难理解。添加@hrbrmstr回答的内容,并显示一些输出
您可以通过首先在全局环境中将t
定义为变量来解决此问题(但不推荐,因为t
是一个基本函数),然后使用为什么需要将变量命名为t
?t
是保留的,因为它是一个转换矩阵
或数据的函数。我希望代码完全对应于模型的变量为什么使用globals不是一个好主意?我经常听到这个,但没有人真正向r解释这个w.r.t。首先,我们都在r中使用全局变量。当启动r并从控制台开始工作时,无论何时创建新对象(函数或变量),都会影响当前的全局环境。问题是,当您试图通过操作这些变量时,也不能保证快速测试:我将变量x
设置为一个值,比如x@hrbrmstr,我为您单击了一次;)格雷格,说得通,谢谢。这是唯一的问题吗?t
未锁定,您可以在全局环境中创建具有该名称的对象。在OPs上下文中,它被锁定,但在全局环境中直接设置t
时,它不会被锁定。
Error in sq1() : cannot change value of locked binding for 't'
t <- 0
sq1 <- function() {
t <<- 7
}
sq1 <- function() {
return(7)
}
t <- sq1()
> t <- 5
> t
[1] 5
> sq1=function() {
t<<-7 }
> sq1()
> t
[1] 7
f <- function() .GlobalEnv$t <- 7
f()