我开始使用矩阵
Xray Stay Leave
[1,] "H" "H" "H"
[2,] "A" "L" "O"
我有以下矢量:
[1] "H" "L"
我想获得输出
"Stay".
我试过了:
which(vec %in% matrix )
但是这给了我以下输出:
[1] 1 2
似乎只是告诉我它找到H和L的行。我需要一个完全匹配的列名。
答案 0 :(得分:2)
另一种方法:
vec <- c("H", "L")
colnames(mat)[colMeans(mat == vec) == 1]
# [1] "Stay"
其中mat
是矩阵的名称。
答案 1 :(得分:1)
这应该返回一个逻辑向量:
logv <- apply(mat, 2, function(x) identical(vec,x))
然后这将选择正确的列名称:
dimnames(mat)[[2]][logv]
[1] "Stay"
测试用例:
mat <- matrix( c( "H","H", "H", "A","L","O") ,2, byrow=TRUE,
dimnames=list(NULL, c('Xray', 'Stay', 'Leave') ) )
答案 2 :(得分:1)
您可以尝试:
如果mat
和vec
是矩阵和向量
colnames(mat)[table(mat %in% vec, (seq_along(mat)-1)%/%nrow(mat) +1)[2,] >1]
#[1] "Stay"
答案 3 :(得分:1)
假设m
是您的矩阵,您可以
> vec <- c("H", "A")
> colnames(m)[apply(m, 2, identical, vec)]
注意:此处使用的identical
因为原始帖子显示&#34;我需要完全匹配的列名称&#34;