返回匹配的向量索引

时间:2019-05-15 05:49:28

标签: r

我有一个数据框,其中第一列是要与之匹配的变量的名称。此列具有797个观察值,并且是字符类型。我有另一个向量也是字符类型,有31行。我想返回与小字符向量匹配的数据帧(具有787个观测值)的列的索引。

我使用for循环尝试了一些代码。但无法得到我想要的东西

vec_list<-vector()

for (i in inter_2004_05[,1]){
  for(j in 1:nrow(test_t)){
   if(inter_2004_05[i,1]=test_t[j]){
    vec_list[i]= i
   }
  }
 }

现在``是我要匹配的单词的向量。我期望的是,我们应该检查数据帧(inter_2004_05[,1])第一列中的每个元素在字符向量(test_t)中是否匹配。我想要在inter_2004_05[, 1]中找到匹配项的索引test_t

2 个答案:

答案 0 :(得分:1)

这可以通过使用%in%和哪个来完成。

inter_2004_05  = c('A','B','C','D')
test_t = c('C','B')
indices = which(inter_2004_05 %in% test_t)

答案 1 :(得分:0)

正如RAB已经指出的那样,match将返回索引,因此您可以立即使用这些索引来子集所需的内容。我刚刚测试了以下示例:

#Create 2 vectors
word_vector <- c(paste("test", 1:50, sep=""))
test_vector <- c(paste("test", 10:15, sep=""))

#Find the index of every match
matches <- match(word_vector, test_vector)

#Now matches can be used to subset
word_vector2 <- word_vector[matches > 0]