这可能是一个愚蠢的问题,但我已经困扰了很长一段时间。我看到人们在定义函数时使用单引号括起函数名。我一直在想这样做的好处。以下是一个简单的例子
'row.mean' <- function(mat){
return(apply(mat, 1, mean))
}
提前致谢!
答案 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的评论,这里还有两个用例。
修复功能
使用%
符号,我们可以天真地定义向量x
和y
之间的点积:
`%.%` <- 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?