2011-01-13 40 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的主要改造得到