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