2013-07-25 26 views
4

我想用符号创建另一个函数(例如〜)R - “问号”功能如何工作?

+1

''R''?'= c; R>'?'(3,5)''''''''''''''''''''你可以做一些类似''R''〜'= c; R> 3〜5 [1] 3 5''。这是一个相当普遍的问题。看看被反引号包围的'?'(我不知道如何通过反引号将它包含在这里的格式中),看看它定义的 –

回答

5

你不能做什么的“裸”为?foo不搞乱C代码定义了R的语法。例如,您不能使[fnord变得有意义。

这来自R源中gram.y的语法定义。

| '~' expr %prec TILDE  { $$ = xxunary($1,$2); } 
| '?' expr   { $$ = xxunary($1,$2); } 

| expr ':' expr   { $$ = xxbinary($2,$1,$3); } 
| expr '+' expr   { $$ = xxbinary($2,$1,$3); } 

上面的第二行定义了?foo的语法。你究竟想要做什么?

+0

我想创建一个访问我创建的缓存环境的快速方法。例如,通过编程函数'_',_myVariable可以返回getEnv(“myVariable”,envir =“myCacheEnv”) – RockScience

1

您可以通过使用反引用``来制作任意名称的函数和变量。

`~` <- `+` 
y <- 5 
x <- 10 
y ~ x 
# 15 

我不会乱~不过,除非你不打算做任何统计建模....

+0

与'〜'混淆如何看起来有点可怕! – zx8754

+0

好点,〜肯定不是最好用的字符。几乎所有的角色都已被占用。我一直在想,通过S4课程,我们可以调度差异化的e1〜e2和〜e2 – RockScience