Given an array with k distinct elements, write a function to return all elements that have at least two elements greater than themselves in the same array. For example, given the following array [2, 3, 9, 7, 6], your function should return [2, 3, 6].
library(tidyverse) # Includes purrr package
library(reticulate) # Interface to Python
<- c(2, 3, 9, 7, 6)
vector
<- function(vector) {
min_elem_r <- c() # auxiliary vector
aux
for (i in 1:length(vector)) {
<- sum(vector[i] < vector[-i]) # amount of elements greater than i
comp if (comp >= 2) {
length(aux) + 1] <- vector[i]
aux[
}
}
return(aux)
}
# Applying R function
min_elem_r(vector)
## [1] 2 3 6
import numpy as np
# Accessing an R object in Python
# r.vector = [2, 3, 9, 7, 6]
np.array(r.vector)
## array([2., 3., 9., 7., 6.])
= np.array([2, 3, 9, 7, 6])
array
# List comprehension
def min_elem_py(array):
return [array[i] for i in range(0, len(array)) if sum(array[i] < array) >= 2]
# Applying Python function
min_elem_py(array)
## [2, 3, 6]
= np.array([1, 4, 7, 8, 11, 15, 30])
array
min_elem_py(array)
## [1, 4, 7, 8, 11]
# Accessing an Python object in R
<- py$array
vector
min_elem_r(vector)
## [1] 1 4 7 8 11