查找特定值的列索引

Bti*_*rt3 4 string r

我有脑痉挛.以下是玩具数据集:

df <- data.frame(
        id = 1:6, 
        v1 = c("a", "a", "c", NA, "g", "h"),
        v2 = c("z", "y", "a", NA, "a", "g"),
        stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

我有一个特定的值,我希望在一组定义的列中找到它,我想确定它所在的位置.我正在搜索的字段是字符,诀窍是我正在寻找的值可能不存在.此外,数据集中还存在空字符串.

假设我知道如何做,变量位置表示我想要返回的值.

> df
  id   v1   v2 position
1  1    a    z        1
2  2    a    y        1
3  3    c    a        2
4  4 <NA> <NA>       99
5  5    g    a        2
6  6    h    g       99
Run Code Online (Sandbox Code Playgroud)

一般规则是我想找到值"a"的位置,如果它没有找到或者如果缺少v1,那么我想要99返回.

在这个例子中,我正在搜索v1和v2,但实际上,我有10个不同的变量.值得注意的是,我搜索的值只能在10个变量中存在一次.

生成此重新编码的最佳方法是什么?

提前谢谢了.

Pra*_*ani 10

用途match:

> df$position <- apply(df,1,function(x) match('a',x[-1], nomatch=99 ))
> df
  id   v1   v2 position
1  1    a    z        1
2  2    a    y        1
3  3    c    a        2
4  4 <NA> <NA>       99
5  5    g    a        2
6  6    h    g       99
Run Code Online (Sandbox Code Playgroud)