gpt4 book ai didi

r - 检查矩阵中的至少 2 列是否至少有 3 个值...但它们必须在同一行中(用于成对测试)

转载 作者:行者123 更新时间:2023-12-05 01:04:38 25 4
gpt4 key购买 nike

假设我有一个如下矩阵:

set.seed(123)
newmat=matrix(rnorm(25),ncol=5)
colnames(newmat)=paste0('mark',1:5)
rownames(newmat)=paste0('id',1:5)
newmat[,2]=NA
newmat[c(2,5),4]=NA
newmat[c(1,4,5),5]=NA
newmat[1,1]=NA
newmat[5,3]=NA

> newmat
mark1 mark2 mark3 mark4 mark5
id1 NA NA 1.2240818 1.7869131 NA
id2 -0.23017749 NA 0.3598138 NA -0.2179749
id3 1.55870831 NA 0.4007715 -1.9666172 -1.0260044
id4 0.07050839 NA 0.1106827 0.7013559 NA
id5 0.12928774 NA NA NA NA

我想在这里以简单的方式检查的唯一一件事是,至少有 2 列具有 3 个值,而且这些列的值在相同的行中...

在上面的例子中,我有一对第 1 列和第 3 列,以及一对第 3 和第 4 列……第 1 和第 4 对不满足这个要求。总共 3 列。

如何在 R 中进行此检查?我知道我会做一些涉及 colSums(!is.na(newmat)) 的事情,但不确定其余的......谢谢!

最佳答案

这是一个矩阵(通过使用 crossprod + is.na 获得),显示了哪些对满足您的目标

> `diag<-`(crossprod(!is.na(newmat)), 0) >= 3
mark1 mark2 mark3 mark4 mark5
mark1 FALSE FALSE TRUE FALSE FALSE
mark2 FALSE FALSE FALSE FALSE FALSE
mark3 TRUE FALSE FALSE TRUE FALSE
mark4 FALSE FALSE TRUE FALSE FALSE
mark5 FALSE FALSE FALSE FALSE FALSE

我们可以看到,(mark1, mark3)(mark3, mark4) 对是期望的输出。

关于r - 检查矩阵中的至少 2 列是否至少有 3 个值...但它们必须在同一行中(用于成对测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71735615/

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