繁体   English   中英

使用带有多个变量的lapply()

[英]using lapply() with multiple variables

我有一个交叉表频率表,其中的度量是CAG,列A01,A02等是频率计数。 即6485计数为13 CAG,35计数为CAG14。我想对每一列的值求和,只要该行的CAG大于或等于模态CAG值。 然后我将其除以A01的总和。 这为我提供了大于或等于该模式的值的比例。 我设法使它适用于一列,但我想使用每一列的相关模式在每一列上运行它。 我将不胜感激!

data <- data.frame(CAG = c(13, 14, 15, 17), 
                   A01 = c(6485,35,132, 12), 
                   A02 = c(0,42,56, 4))

mode <- data$CAG[data$A01 == max(data$A01)]

B <- lapply(data[, 2:ncol(data)], function(x) {
    sum(x[data$CAG >= mode])
})

prop <- B / sum(data$A01)

您还需要将模式计算放入功能中。

sapply(data[, 2:ncol(data)], function(x) {
  mode <- data$CAG[which.max(x)]
  B <- sum(x[data$CAG >= mode])
  B/sum(x)
})
##       A01       A02 
## 1.0000000 0.5882353 

函数which.max等效于(至少在此使用中) x==max(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM