-->

什么做均值%OP%运营商? 例如,“%的%”?(What do the %op% operato

2019-06-18 10:44发布

我试图做这个简单的搜索,但未能找到百分比(任何%在R)符号

是什么%in%指的是在下面的代码?

time(x) %in% time(y)其中xy是矩阵。

如何查找的帮助%in%随后的和类似的功能 %stuff%的图案,因为我无法找到帮助文件?

相关的问题:

  • 是什么比如%+%呢? R中
  • 在R%*%操作
  • 什么%*%的R平均值
  • 是什么%||%R中呢?
  • 是什么%>%的R平均值

Answer 1:

把引号周围找到帮助页面。 这两种工作

> help("%in%")
> ?"%in%"

一旦你的帮助页面,你会看到

“%在%”当前被定义为

' “%中%”< - 函数(X,表)匹配(X,表,NOMATCH = 0)> 0'


由于time是一个通用的,我不知道是什么time(X2)不知道是什么返回X2是。 但是, %in%告诉你从左侧的项目也都在右手边。

> c(1:5) %in% c(3:8)
[1] FALSE FALSE  TRUE  TRUE  TRUE

又见, intersect

> intersect(c(1:5), c(3:8))
[1] 3 4 5


Answer 2:

我没想到GSEE的或Sathish所在的答案远远不够,因为“%” 确实有刚刚在的上下文中的含义所有的本身,而不是%in%操作。 它是由用户定义新的缀运营商的机制。 它比的美德一个更普遍的问题%in%缀经营者或拥有更多的通用前缀祖先match 。 这可能是为使A(S)UM操作一样简单

 `%s%` <- function(x,y) x + y

或者它可能是更有趣的,说做的二阶导数运算符:

 `%DD%` <- function(expr, nam="x") { D(D( bquote(.(expr)), nam), nam) }
 expression(x^4) %DD% "x"
 # 4 * (3 * x^2)

%字符数限制也有重要意义的日期,日期时间的解析,和C型格式的功能,如strptimeformatCsprintf

因为这是最初写我们已经看到了出现magrittr包与dplyr演示的另一个用途阐述% -flanked运营商。

所以,最普遍的答案是%符号通过R解析器特殊处理。 由于分析器用于处理plotmath表情,你还会看到在图形注释广泛的选择?plotmath帮助页面。



Answer 3:

%op%表示缀 二元运算符 。 有几种使用内置运算符% ,你也可以创建自己的。

(单%的迹象是不是R.你可以看到在关键字列表中的关键字?Reserved的帮助页面。)


我如何在二元运算符的帮助?

至于用什么,是不是一个标准的变量名,你必须用引号括或反引号术语。

?"%in%"
?`%in%`    

信用: GSEE的答案 。


是什么%in%呢?

由于所描述的?`%in%`帮助页面(这实际上是?match帮助页面自%in%是真的只有一个版本中缀的match 。)

[ %in% ]返回一个逻辑矢量指示是否存在匹配或不适合其左操作数

这是最常见的分类变量使用,尽管它可以与数字也可以使用。

c("a", "A") %in% letters
## [1]  TRUE FALSE

1:4 %in% c(2, 3, 5, 7, 11)
## [1] FALSE  TRUE  TRUE FALSE

信用: GSEE的答案 , 阿里的答案 , Sathish所在的答案 。


如何创建我自己的中缀二元运算符?

这些功能,并且可以以相同的方式与任何其他函数来定义,与一对夫妇的限制。

  1. 这是一个二元算子的,所以函数必须只能接受两个参数。
  2. 由于该名是非标准的,它必须用引号或反引号来写。

例如,这定义了一个矩阵功率操作。

`%^%` <- function(x, y) matrixcalc::matrix.power(x, y)

matrix(1:4, 2) %^% 3

信用: BondedDust的答案 , 阿里的答案 。


还有什么其他%是有运营商?

基R:

%/%%%执行整数除法和模除分别与上被描述?Arithmetic帮助页面。

%o%给出了外积阵列。

%*%执行矩阵乘法 。

%x%进行克罗内克积阵列。

GGPLOT2 :

%+%替换一个ggplot数据帧。

%+replace%修改在ggplot主题元素。

%inside% (内部)检查在一个范围内的值。

%||%内部)提供的情况下的缺省值NULL值。 该功能也在内部出现在devtools,reshape2,roxygen2和knitr。 (在knitr它被称为%n%

magrittr :

%>%的左手侧管拉入该右手侧的表达式。

%<>%管道左手侧进入在右手侧的表达式,然后将结果分配回到左侧的对象。

%T>%的左手侧管拉入该右手侧的表达式,其中只对于其副作用使用,返回左侧。

%,%构建一个功能性序列。

%$%公开名单的data.frame或成员的列。

data.table:

%between%检查在一个范围内的值。

%chin%就像%in% ,对于字符向量优化。

%like%检查的正则表达式的匹配。

Hmisc:

%nin%返回的相对%in%

devtools:

%:::%内部)获取从作为字符串传递一个命名空间的变量。

SP

%over%执行空间连接(例如,其多边形对应于某些点?)

主题;

%R%一个的符连接元件regex对象。


更一般地,你可以找到在安装计算机上使用的所有软件包所有操作:

library(magrittr)

ip <- installed.packages() %>% rownames
(ops <- setNames(ip, ip) %>% 
  lapply(
    function(pkg)
    {
      rdx_file <- system.file("R", paste0(pkg, ".rdx"), package = pkg)
      if(file.exists(rdx_file))
      {
        rdx <- readRDS(rdx_file)
        fn_names <- names(rdx$variables)
        fn_names[grepl("^%", fn_names)]
      }
    }
  ) %>% 
  unlist
)


Answer 4:

更一般地, %foo%是一个二元运算符的语法。 在R二进制运营商确实在伪装只是功能,并采取有两个参数(一个前和运营商成为该函数的前两个参数后的一个)。

例如:

> `%in%`(1:5,4:6)
[1] FALSE FALSE FALSE  TRUE  TRUE

虽然%in%的基础R的定义,你也可以定义你自己的二元函数:

`%hi%` <- function(x,y) cat(x,y,"\n")
> "oh" %hi% "my"
oh my 


Answer 5:

%in%是用于查找和子集的矩阵或数据帧相同的名称或值的多次出现的操作者。

例如1:具有相同名称的子集化

set.seed(133)
x <- runif(5)
names(x) <- letters[1:5]
x[c("a", "d")]
#  a         d 
#  0.5360112 0.4231022

现在你改变“d”,以“一”的名字

 names(x)[4] <- "a"

如果您尝试提取相似的名称和使用以前的标它的价值,它不会工作。 注意结果,它不具有的元件[1]和[4]。

x[c("a", "a")]

#        a         a 
#    0.5360112 0.5360112 

所以,你可以通过使用提取的变量不同位置的两个“一” S %in%二进制运算符。

names(x) %in% "a"
#  [1]  TRUE FALSE FALSE  TRUE FALSE

#assign it to a variable called "vec"
 vec <- names(x) %in% "a"

#extract the values of two "a"s
 x[vec]
 #         a         a 
 #  0.5360112 0.4231022 

实施例2:从柱子集的多个值,请参考这个网站中的示例



文章来源: What do the %op% operators in mean? For example “%in%”?