获取表中的字符模式索引

时间:2014-07-26 14:41:01

标签: r character

有一个表有两列,每列都有类型字符。它是:

"FTGS" "JKLP"
"CVVA" "CVVA"
"HGFF" "CVVD"
"CVVD" "HGFF"
"OPSF" "WQSR"

...

有人可以告诉我如何编写一个函数来吐出第1列和第2列中特定字符组合的索引(行号)吗?如果我输入函数(HGFF,CVVD),它将返回3和4(HGFF或CVVD是否在第1列或第2列无关紧要)。如果我输入(CVVA,CVVA)它将是2.问题是它应该检查两列。 R中有解决方案吗?否则bash也没关系。

2 个答案:

答案 0 :(得分:0)

以下功能应该适合您:

myFun <- function(v1, v2, indf) {
  x <- sort(c(v1, v2))
  which(apply(indf, 1, function(z) all(sort(z) == x)))
}

用法就是这样(假设你的数据在data.frame中被称为&#34; mydf&#34;):

myFun("CVVA", "CVVD", indf = mydf)
myFun("HGFF", "CVVD", indf = mydf)

在R中,您正在寻找的功能是which,但它不会直接执行您正在寻找的内容。

答案 1 :(得分:0)

这似乎也有效

fun1 <- function(v1, v2, mat) {
ind <- c(0, -nrow(mat))
indx1 <- which(mat == v1) + ind
indx2 <- which(mat == v2) + ind
if (all(sort(indx1) == sort(indx2))) {
    indx1
} else NULL
}

 fun1("HGFF","CVVD", mat) #mat is the matrix
 #[1] 3 4

fun1("CVVA","CVVD", mat)
#NULL