我有两个名字栏。他们看起来像这样
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)中的错误:替换长度为零
所以这不是一个重复的帖子,因为上一个没有显示如何搜索名称列表
答案 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")