r - 在R中查找某些列的列号
问题描述
我有一个很大的相关矩阵,我想获得这些列的列号,其中包含 1(对角线除外)。这是我所做的不起作用:
# A toy example
m <- matrix(c(1,0,1,0,1,0,1,0,1), ncol = 3 , nrow = 3)
m <- m - diag(nrow(m)) #Removing 1's from the diagonal
col(m[which(m == 1)])
有没有针对巨大矩阵的有效解决方案?
解决方案
碱基R
我不确定这种方式对您的情况是否有效,但您可以尝试
cols <- c()
for (i in 1:ncol(m)){
if (any(m[,i] == 1 && !any(is.na(m[,i])))){
cols <- c(cols,i)
}
}
cols
[1] 1 3
dplyr
风格
根据您的评论,我会m
事先将其作为数据框。
m <- as.data.frame(m)
n <- m %>%
dplyr::summarise(across(everything(), ~any(.x == 1) )) %>%
select_if(function(x) x == TRUE) %>%
names
which(colnames(m) %in% n)
[1] 1 3
推荐阅读
- reactjs - 如何在手风琴中包含表单?(反应,Formik)
- c# - Unity Raycasthit 无法识别带有标签的对象
- mongodb - 连接到 kubernetes 上的主副本集 mongo
- facebook - Facebook 消息 API
- amazon-web-services - 从我的域到 API Gateway 调用 URL 的 CNAME 记录不起作用
- javascript - 如果日期在javascript中低于一个月的20,如何设置月份的特定日期?
- scala - 在 Scala 中调用其他对象的主要方法
- dart - 无法修复:没有为“Firebase auth”类定义 signInWithGoogle
- node.js - 将标题元素添加到 paperjs SVG(使用 node.js)
- python - 从应用引擎访问谷歌云存储帐户对象