單%
標誌不是在R(你可以看到那些?Reserved
幫助頁面的列表。)相反,%
表示infixbinary operator關鍵字。有幾個內置運營商使用%
,您也可以創建自己的。
我如何在二元運算符的幫助?
與任何不是標準變量名稱的東西一樣,必須將該術語用引號或反引號括起來。
?"%in%"
?`%in%`
Credit:GSee's answer。
是什麼%in%
辦?
作爲?`%in%`
幫助頁面上描述(這實際上是因爲%in%
的?match
幫助頁面實際上只是的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's answer,Ari's answer,Sathish's answer。
如何創建自己的中綴二元運算符?
這些是函數,可以用與其他函數相同的方式定義,但有一些限制。
- 這是一個二進制算子的,所以函數必須只能接受兩個參數。
- 由於該名稱不符合標準,因此必須使用引號或反引號進行書寫。
例如,這定義了矩陣冪運算符。
`%^%` <- function(x, y)
{
matrixcalc::matrix.power(x, y)
}
matrix(1:4, 2) %^% 3
來源:BondedDust's answer,Ari's answer。
%
運營商有什麼其他的呢?
在基R:
%/%
和%%
分別執行integer division和modular division,並且?Arithmetic
幫助頁面上的描述。
%o%
給出了陣列的outer product。
%*%
執行matrix multiplication。
%x%
執行陣列的Kronecker product。
在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
)
參見http://stackoverflow.com/questions/1328903/what-does- EG-DO-在-R?rq = 1 –