gpt4 book ai didi

返回包含向量所有元素的矩阵的 ID

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

我知道答案非常简单,但到目前为止我还无法得到它。我也试图通过类似的问题找到答案,但我找不到。无论如何,我需要返回包含向量所有元素的矩阵 mID (NoN)。在我准备的下面的示例中,我需要返回 ID 1 和 3。

示例:

m<-matrix(c(1,1,1,1,2,2,34,45,4,4,4,4,4,5,6,3,3,3,3,21,22,3425,345,65,22,42,65,86,456,454,5678,5,234,22,65,21,22,786),nrow=19)
colnames(m)<-c("ID","LO")
NoN<-c(21,22)

到目前为止我的尝试如下:

1: m[all(m[,2] %in% NoN),1]
2: m[match(NoN, m[,2]),1]
3: subset(m, m[,2] %in% NoN)
4: m[which(m[,2] %in% NoN),1]

欣赏!

最佳答案

这是一个使用基R的函数:

FOO <- function(m, NoN){
# split matrix based on ID column
m2 <- lapply(split(m, m[, 1]), function(x) matrix(x, ncol = 2))
# match every element of NoN, create logical matrix
matchresult <- do.call(cbind, lapply(lapply(m2, function(x) lapply(NoN, function(y) match(y, x[,2]))), unlist))
# print colnames (= ID) of columns with no NA
as.numeric(colnames(matchresult)[colSums(apply(matchresult, 2, is.na)) == 0])
}

函数调用结果:

> FOO(m, NoN)
[1] 1 3

除您的示异常(exception)未经测试,但这应该能够处理任何长度的 NoN 以及 IDLO 的重复组合.


编辑:@docendodicimus 提供的更简洁、更高效的变体:

FOO <- function(m, NoN){
df <- as.data.frame(m)
unique(df[as.logical(ave(df$LO, df$ID, FUN = function(x) all(NoN %in% x))),"ID"])
}

关于返回包含向量所有元素的矩阵的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47906477/

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