R在数据框中找到小于另一个向量中的值的值

R find values in a dataframe which are smaller than values in another vector

这是我的数据:

myvec <- c(9,12,18)
mytez1 <- c(5,10,15,0,3,13)
mytez2 <- c(7,14,12,8,2,17)
mytez3 <- c(5,9,11,16,19,20)
mytez <- data.frame(mytez1, mytez2, mytez3)

因此最后我使用了一个向量(myvec)和一个数据帧(mytez)。我的目标是计算数据帧 (mytez) 中小于向量 (myvec) 值的所有值。因此,我想分别找到每列的计数。因此,数据帧的第一列 (mytez1) 应该只与 myvec 的第一个值(此处为 9)进行比较,以找出小于 9 的值的数量(在 mytez1 中为 3 个值)。 我知道它是如何与 sum:

一起工作的
sum(mytez[,1] < myvec[1], na.rm="TRUE")

但由于我有一个非常大的数据集,我需要找到一个循环来完成它。 使用 sapply 时:

counts <- sapply(myvec, function(x)  sum(mytez<x))

它没有像我想的那样单独进行。 有人知道如何去做吗? 非常感谢!

以下是在 base R 中执行此操作的几种方法:

#1. Using sweep
colSums(sweep(mytez, 2, myvec, `<`))

#2. Using mapply
colSums(mapply(`<`, mytez, myvec))

#3. Transposing the dataframe
rowSums(t(mytez) < myvec)

#Output
#mytez1 mytez2 mytez3 
#     3      3      4