从R中的列中查找名称列表

时间:2017-11-29 04:28:29

标签: r search

我有两个名字栏。他们看起来像这样

name.a <- c("SPIDER MAN","SUPER MAN","BAT MAN") 
name.b <- c("SNOW WHITE","SPIDER MAN","SHELDON COOPER")
y <- cbind(name.a, name.b)

我想在name.a中搜索name.b中的每个字符,然后返回索引。例如,我想在name.b中搜索“SPIDER MAN”,得到结果2.然后对“SUPER MAN”和“BAT MAN”执行相同操作。

我失败的尝试是

a <- c()
for (i in 1:dim(y)[1]){
  for(j in 1:dim(y)[1]){
    if (x[,2][j] == x[,1][i]){a <- c(a,i)}
  }
}

我也使用了grep,但这也没用。

请注意,我正在尝试搜索名称列表。我知道如何使用grep搜索一个名称,但假设我在name.a中有超过2000个名字,我不想使用grep超过2000次。当在for循环中使用grep时,我得到的错误是“[i]&lt; -grep(y $ name.a [i],y $ name.b)中的错误:替换长度为零

所以这不是一个重复的帖子,因为上一个没有显示如何搜索名称列表

1 个答案:

答案 0 :(得分:1)

grep方式:

name.a <- c("SPIDER MAN","SUPER MAN","BAT MAN") 
name.b <- c("SNOW WHITE","SPIDER MAN","SHELDON COOPER")
y <- cbind(name.a, name.b);


grep("SPIDER MAN", y[, 2]);
#[1] 2

match方式:

match("SPIDER MAN", y[, 2]);
#[1] 2

which方式:

which(y[, 2] == "SPIDER MAN")