向量的多少个元素小于或等于该向量的每个元素?

mar*_*ess 1 for-loop r vector

我感兴趣的是编写一个程序,该程序给出向量中元素的数量,这些元素的数量x小于或等于向量中的任何给定值x.

让我们说吧

x = [1,3,8,7,6,4,3,10,12]

我想计算内的元件的数量x,其是小于或等于1,至3〜8等.例如第五元素x[5]6和元素小于或等于的数6等于5.但是,我只知道如何进行元素比较,例如x[1]<=x[3]

我想我将使用for循环并在这里有类似的东西:

for (i in length(x)){
       if (x[i]<=x[i]){
       print(x[i])}
       # count number of TRUEs
}
Run Code Online (Sandbox Code Playgroud)

但是,这段代码显然不符合我的要求.

Rol*_*and 5

用于outer立即进行所有比较:

outer(x, x, "<=")
#       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8] [,9]
# [1,]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE TRUE
# [2,] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE TRUE
# [3,] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE TRUE
# [4,] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE TRUE
# [5,] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE TRUE
# [6,] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE TRUE
# [7,] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE TRUE
# [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE TRUE
# [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE

colSums(outer(x, x, "<="))
#[1] 1 3 7 6 5 4 3 8 9
Run Code Online (Sandbox Code Playgroud)