Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Where is %% used in R?

I am beginner at R and learning about loops, I came across these two examples:

v <- LETTERS[1:4]
for ( i in v) {
  print(i)
}
x <- c("Hardwork","is","the","key","of","success")  
y="is"
if(y %in% x) {    
  print("key is found")  
} else {  
  print("key is not found")  
} 

Here, I am not able to understand why we used %in% in the second example and "in" in the first example. I tried to use them the other way around but I got an error. How can this rule of using %in% be generalised?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The ‘%’ signs denote an infix operator

This is explained most quickly with an example. Most functions in R do something to something else. So f(x) is doing function f() to object x.

Infix operators are also functions, but they do something to two things. So x %in% y does %in% to x and y.

You can easily make your own infix operators, like so:

x <- c(1,2,3)
y <- c(5,2,9,10)

## get the max value of each vector at each index
`%is_longer_than%` <- function(x,y){
  if(length(x) > length(y)) TRUE
  else FALSE
}

x %is_longer_than% y
#> [1] FALSE

y %is_longer_than% x
#> [1] TRUE

Created on 2022-08-24 by the reprex package (v2.0.1)

You can actually see that %in% is just a function in R by running `%in%` in the console:

`%in%`
#> function (x, table) 
#> match(x, table, nomatch = 0L) > 0L
#> <bytecode: 0x00000226009335c0>
#> <environment: namespace:base>

Created on 2022-08-24 by the reprex package (v2.0.1)

So x %in% y is equivalent to match(x, y, nomatch = 0L)

in versus %in%

in and %in% are two completely different things. The ‘%’ signs don’t do something to in, they’re just different functions with similar names. in is a reserved word in R, which does very secret things in C++. It’s similar to other reserved words like for and <.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading