百分号R

时间:2013-12-12 20:52:18

标签: r

我最近阅读了一个名为'pathifier'的R包的一些源代码。在源代码中,它使用百分号。

if (0 %in% xs) {
si <- NULL
cat(file = logfile, append = TRUE, "skipping pathway ", 
i, " (0 in xs)\n")
}

%in%在这个函数中意味着什么?它只是意味着常规'in'吗?

2 个答案:

答案 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:“特殊运算符”。