我试图将一个数据帧中的行值与从第二个数据帧读取的阈值限制进行比较。我想获得价值数量"每行"在dat中超过上限(UL来自极限df),低于下限(LL来自极限df)
dat <- data.frame(A = c(12, 23, 45), B = c(54, 73, 25), C = c(47, 52, 38))
limits <- data.frame(NAME = c('A', 'B', 'C'), UL = c(34, 12, 40), LL = c(55, 80, 50))
如何引用下面apply
函数中限制表中的值?
apply(dat, 1, function(x) sum(x < limits$LL | x > limits$UL))
感谢。
答案 0 :(得分:1)
您可以使用下面的sapply
:
rownames(limits) <- limits[,"NAME"]
list.counts <- sapply(colnames(dat), function(n) {
dat.n <- dat[,n]
limits.n <- limits[n,]
sum(dat.n < limits.n[,"LL"] | dat.n > limits.n[,"UL"])})
答案 1 :(得分:0)
我这样做:(使用for
而不是apply
并考虑@ jogo的评论,因此更改UL
和{{1在你的例子中):
LL