我最近阅读了一个名为'pathifier'的R包的一些源代码.在源代码中,它使用百分号.
if (0 %in% xs) {
si <- NULL
cat(file = logfile, append = TRUE, "skipping pathway ",
i, " (0 in xs)\n")
}
Run Code Online (Sandbox Code Playgroud)
%in%这个功能意味着什么?它只是意味着常规'in'吗?
nog*_*pes 16
该in保留字只能使用for循环.该%in%功能是不同的.如文档中所述?"%in%",定义为:
"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0
Run Code Online (Sandbox Code Playgroud)
所以,它本质上是match.在英语中,x %in% y返回logical与x相同长度的向量,TRUE每次相应的元素x至少存在一次y.
%围绕它的原因是将其标记为"中缀"运算符.(我不知道这是否是确切的术语.)
useR具有创建新的中缀函数的能力,并且调度机制将识别名称开头和结尾的函数%.假设您想创建一个复制值n次的中缀运算符:
`%rep%` <- function(x,y) rep(x,y)
10 %rep% 5
# [1] 10 10 10 10 10
Run Code Online (Sandbox Code Playgroud)
另一个这样做的例子可以在?match的帮助页面上找到,它讨论%in%并演示了如何创建一个中%w/o%缀操作符.R语言参考中描述这一点的部分是10.3.4:"特殊运算符".