gpt4 book ai didi

r - 如何根据逻辑从数值矩阵生成向量或因子(无 for 循环)

转载 作者:行者123 更新时间:2023-12-02 02:57:26 25 4
gpt4 key购买 nike

我有一个 30,000 行 3 列的数字矩阵。我想根据矩阵每行中的 3 个值生成一个简单的通过/失败向量(或因子)。我想应用以下逻辑:

如果行中的所有 3 个值都 > 3,则输入 PASS,否则输入 FAIL。

我知道如何使用 for 循环来做到这一点,但是我怎样才能做得更快呢?我有几十个这样的矩阵...谢谢!

as.matrix(rbind(c(129,129,120),c(135,97,96),c(0,0,0),c(39,4,2)))

期望的输出:通过,通过,失败,失败

最佳答案

使用allapply(尽管apply使用它自己的循环)。

m <- as.matrix(rbind(c(129,129,120),c(135,97,96),c(0,0,0),c(39,4,2)))

apply(m, 1, function(x) all(x > 3))
# [1] TRUE TRUE FALSE FALSE

如果您确实想要“PASS”和“FAIL”,您可以factor apply 步骤的结果。

factor(apply(m, 1, function(x) all(x > 3)), 
levels = c(FALSE, TRUE),
labels = c("FAIL", "PASS"))
# [1] PASS PASS FAIL FAIL
# Levels: FAIL PASS
<小时/>

稍微扩展 Codoremifa 的答案,类似的方法适用于 data.table,特别是当您指定想要一个向量或因子作为输出时。

library(data.table)
DT <- data.table(m)
DT[, all(.SD > 3), by = 1:nrow(DT)][, factor(V1, labels = c("FAIL", "PASS"))]
# [1] PASS PASS FAIL FAIL
# Levels: FAIL PASS

关于r - 如何根据逻辑从数值矩阵生成向量或因子(无 for 循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525065/

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