函数名称在R中的单引号中

时间:2014-09-18 01:44:15

标签: r function

这可能是一个愚蠢的问题,但我已经困扰了很长一段时间。我看到人们在定义函数时使用单引号括起函数名。我一直在想这样做的好处。以下是一个简单的例子

'row.mean' <- function(mat){
    return(apply(mat, 1, mean))
}

提前致谢!

1 个答案:

答案 0 :(得分:9)

取消理查德的假设,后退标记允许您在名称中使用通常不允许的符号。参见:

`add+5` <- function(x) {return(x+5)}

定义了一个函数,但是

add+5 <-  function(x) {return(x+5)}

返回

Error in add + 5 <- function(x) { : object 'add' not found

要引用该函数,您还需要明确使用后面的刻度。

> `add+5`(3)
[1] 8

要查看此函数的代码,只需调用它而不使用其参数:

> `add+5`
function(x) {return(x+5)}

另请参阅此评论,该评论处理名称分配中的反引号和引号之间的区别:https://stat.ethz.ch/pipermail/r-help/2006-December/121608.html

注意,后退滴答的使用更为通用。例如,在数据框中,您可以使用以整数命名的列(可能来自在整数因子上使用reshape::cast)。

例如:

test = data.frame(a = "a", b = "b")
names(test) <- c(1,2)

要检索这些列,您可以将反引号与$运算符结合使用,例如:

> test$1
Error: unexpected numeric constant in "test$1"

> test$`1`
[1] a
Levels: a

有趣的是,在分配数据框列名时,不能使用反向标记;以下不起作用:

test = data.frame(`1` = "a", `2` = "b")

回应statechular的评论,这里还有两个用例。

修复功能

使用%符号,我们可以天真地定义向量xy之间的点积:

`%.%` <- function(x,y){

    sum(x * y)

}

给出了

> c(1,2) %.% c(1,2)
[1] 5

了解更多信息,请参阅:http://dennisphdblog.wordpress.com/2010/09/16/infix-functions-in-r/

替换功能

以下是一个很好的答案,展示了这些内容:What are Replacement Functions in R?