我有一个矩阵,我想根据值提取列名称。在本例中,我想要包含小于或等于 2 的值的任何列的名称(该值位于哪一行并不重要)。
set.seed(42)
DF <- matrix(sample(1:9,9),ncol=3,nrow=3)
DF <- as.data.frame.matrix(DF)
这是我尝试过的,(如果矩阵中只有 1 行,它似乎可以工作)
test<-colnames(DF)[which(DF<=2),]
test 将表示包含值 <= 2 的列名称
最佳答案
1
运行sapply
在列上找到 min
然后检查是否 min
符合你的条件。
colnames(DF)[sapply(DF, min) <= 2]
#[1] "V3"
2
您还可以运行apply
在列 ( MARGIN = 2
) 上查看是否 any
每列的值都满足要求的条件
colnames(DF)[apply(DF, MARGIN = 2, function(a) any(a<=2))]
#[1] "V3"
3
使用arr.ind = TRUE
与 which
。这将给出满足 which
条件的值的索引。从中提取列信息 [,2]
.
unique(colnames(DF)[which(DF<=2, arr.ind = TRUE)[,2]])
#[1] "V3"
数据
set.seed(42)
DF <- matrix(sample(1:9,9),ncol=3,nrow=3)
DF <- as.data.frame.matrix(DF)
DF
# V1 V2 V3
#1 9 5 6
#2 8 4 1
#3 3 7 2
关于根据 R 中的值从矩阵返回列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727397/