在 R 中通过 base::if() 访问 if 语句
Access the if statement via base::if() in R
我在 R
中编码,出于稳定性目的,当我必须部署某些东西时,我使用语法 package::function(arguments)
调用每个函数,只是为了避免使用时可能发生的冲突很多包裹。这些年来对我帮助很大。
我知道 if
是一个保留字,所以从技术上讲,某人不可能(或者至少在我看来应该如此)定义一个对象并将其命名为 if
。
我也知道它属于控制流语句(我认为这是一个不同的“东西”)并且由于之前的考虑我也知道以下问题可能没有用。我的纯技术疑虑是:
- 为什么我把它包含在反引号函数 class returns 结果是“函数”?
- 为什么没有反引号我会出错?最后也是最重要的
- 为什么我无法通过通常的
base::if()
语法访问它?
正如我所说,很可能是无用的问题,但此时我对它下面的细节感到好奇。
> class(if)
Error: unexpected ')' in "class(if)"
> class(`if`)
[1] "function"
> base::if(T) T
Error: unexpected 'if' in "base::if"
> if(T) T
[1] TRUE
> base::if(`T`) T
Error: unexpected 'if' in "base::if"
if
-with-backticks 实际上 returns .Primitive("if")
"Internal vs Primitive" 上的 R 语言定义部分指定 .Primitive
对象包括
“Special functions” which really are language elements, but implemented as primitive functions:
{ ( if for while repeat break next
return function quote switch
没有反引号 或 base::if
的裸“if”不起作用的原因是上面的“语言元素”被 R 视为特殊情况解析器。输入 base::
后,R 的解析器会期望下一个符号是可以在 base
命名空间中查找的常规符号。 base::if
、base::for
和 base::(
都是 return 错误,因为 R 不希望这些特殊元素出现在输入流的这个位置 ;它们在语法上不正确。
我在 R
中编码,出于稳定性目的,当我必须部署某些东西时,我使用语法 package::function(arguments)
调用每个函数,只是为了避免使用时可能发生的冲突很多包裹。这些年来对我帮助很大。
我知道 if
是一个保留字,所以从技术上讲,某人不可能(或者至少在我看来应该如此)定义一个对象并将其命名为 if
。
我也知道它属于控制流语句(我认为这是一个不同的“东西”)并且由于之前的考虑我也知道以下问题可能没有用。我的纯技术疑虑是:
- 为什么我把它包含在反引号函数 class returns 结果是“函数”?
- 为什么没有反引号我会出错?最后也是最重要的
- 为什么我无法通过通常的
base::if()
语法访问它?
正如我所说,很可能是无用的问题,但此时我对它下面的细节感到好奇。
> class(if)
Error: unexpected ')' in "class(if)"
> class(`if`)
[1] "function"
> base::if(T) T
Error: unexpected 'if' in "base::if"
> if(T) T
[1] TRUE
> base::if(`T`) T
Error: unexpected 'if' in "base::if"
if
-with-backticks 实际上 returns .Primitive("if")
"Internal vs Primitive" 上的 R 语言定义部分指定 .Primitive
对象包括
“Special functions” which really are language elements, but implemented as primitive functions:
{ ( if for while repeat break next return function quote switch
没有反引号 或 base::if
的裸“if”不起作用的原因是上面的“语言元素”被 R 视为特殊情况解析器。输入 base::
后,R 的解析器会期望下一个符号是可以在 base
命名空间中查找的常规符号。 base::if
、base::for
和 base::(
都是 return 错误,因为 R 不希望这些特殊元素出现在输入流的这个位置 ;它们在语法上不正确。