首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有多个变量的lapply()

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

Stack Overflow用户
提问于 2017-06-25 18:27:10
回答 1查看 182关注 0票数 0

我有一个跨标签的频率表,其中的测量是CAG,列A01,A02等是频率计数。也就是说,13CAG的6485个计数,CAG 14的35个计数。我希望每一列中的值之和,条件是该行的CAG大于或等于模态CAG值。然后,我将除以A01之和。这提供了大于或等于模式的值的比例。我已经设法让它在一列上工作,但是我想在每一列上运行它,对每一列使用相关的模式。我很感谢你的帮助!

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-25 18:59:13

您也需要将模式计算放在函数中。

代码语言:javascript
复制
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.maxx==max(x)等效(至少在这种用法中是如此)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44749314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档