gpt4 book ai didi

r - 在两个列表上应用族(以避免嵌套 for 循环)

转载 作者:行者123 更新时间:2023-12-01 22:19:54 25 4
gpt4 key购买 nike

假设我有以下内容:

myseq <- seq(0, 1, by = 0.1)
scores <- sample(seq(0, 1, by = 0.01), 10)
var1 <- sample(c(0,1), 10, replace = T)
var2 <- sample(c(0,1), 10, replace = T)
mydf <- data.frame(scores = scores, var1 = var1, var2 = var2)

myseq
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

mydf
scores var1 var2
1 0.10 1 0
2 0.06 1 0
3 0.74 0 0
4 0.15 1 0
5 0.40 1 1
6 0.96 0 0
7 0.04 1 0
8 0.71 0 1
9 0.94 1 1
10 0.38 0 0

对于 myseq 中的每个值,我想对 var1var2 的记录子集求和,其中 scores 大于 myseq 中的值。

我只想使用应用系列函数(apply、lapply、tapply、sapply、mapply 等)来执行此操作。换句话说,没有嵌套的 for 循环。

所以,例如:

myseq 中的第一个值是 0.0。所有分数都大于0.0,所以我想返回var1 = 6var2 = 3

myseq 中的第二个值是 0.1。 10 个 scores 中只有 7 个大于 0.1,所以我想返回 var1 = 3var2 = 3.

……等等等等……

最后,我希望最终输出为 11(r) x 2(c) 矩阵(或数据框或列表),其中包含每个变量的总和。

var1 var2
6 3
3 3
...
...

注:11(r)是因为myseq的长度为11; 2(c) 是因为有两个变量,var1var2

最佳答案

是这样的吗?

res<-t(sapply(myseq,function(x){apply(mydf[scores>x,2:3],2,sum)}))

关于r - 在两个列表上应用族(以避免嵌套 for 循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com