2011-01-13 29 views
2

我有一个内部维基,我创建了一个函数w(参数),它直接在我的wiki上使用browseURL(url,browser)打开相应的页面。但是,我想用#参数替换它,而不是使用w(参数),类似于?参数。是否有人知道,如果这种具有shortkey函数定义R内部可能R,个人?参数函数,导致自己的在线帮助

非常感谢您的帮助

BR 马丁

回答

1

“#”开始R中的注释,这样就永远不会通过了解析器。你必须修改核心并重新编译R,如果你真的想让#foo做一些其他的事情。

+0

其他任何短键都很好,#仅仅是一个例子,抱歉不够清楚 – Eva 2011-01-13 10:12:31

+3

你是什么意思的'短'? R的语法中没有这样的概念。 ?foo符号是映射到低级别的帮助(“foo”)的一种特殊语法。记住R是一种功能性语言,而不是一种宏观语言。您的用户应该拥抱w(foo)表示法。 – Spacedman 2011-01-13 11:01:33

+0

R短语中的“shortkey”==“一元运算符”运算符,但基本上你是对的;正如Brian Ripley所说的,你不能在不改变解析器的情况下将一元运算符添加到R中。 – 2011-01-13 12:10:26

4

不,你要找的是在R中定义一个新的一元运算符,这是不可能的。 (并且#是R中的注释字符,因此无论如何已经被使用,所以这将不起作用。)

这个由Brian Ripley回应同样积极的问题的post有更多解释(不多)

1

你可以改变什么foo的重新分配它?

> assign("?",function(x){cat("HALP!\n")}) 
> ?foo 
HALP! 

显然,你会成为通过,如果arg是不是你所感兴趣的东西就掉在默认的帮助系统,但是这是很难看。

0

你可以定义一个二元运算符,然后通过任何在第一个参数,例如,

"%w%" <- function(x, y) w(y) 
1%w%argument 

这4个按键,而不是1,但也仅是接近你可以不带R的主要改造得到