1

我试图以这种方式比较来自 2 个向量的元素,但我只得到第一个元素的结果。

      >ex1<-c('gdgdg','dd','fffff','ssdsds')

      fuct1<-function(x){
        for(i in 1:length(x)){
          ex2<-c('xxxx','ddd','ddd','ddd','dddd')
          match<-agrep(x[i],ex2[i],value='true')
          return(match[i])
         }
      }

      >fuct1(ex1)

通过这个例子,我想比较'gdgdg'和'xxxx'(每个向量的第一个元素)'dd'和'ddd'(第二个)等等......,结果我想要一些东西(NA ,ddd,NA,NA)。我的代码结果只是 NA。谢谢你的帮助。

4

3 回答 3

4

你想在sapply这里使用:

ex2<-c('xxxx','ddd','ddd','ddd','dddd')
sapply(ex1, function(x) agrep(x, ex2))

$gdgdg
integer(0)

$dd
[1] 2 3 4 5

$fffff
integer(0)

$ssdsds
integer(0)
于 2013-10-07T14:44:19.780 回答
1

T认为你正在寻找 mapply

  mapply(agrep,ex1,ex2,value=TRUE)

但这假设您的 2 个向量具有相同的长度。

于 2013-10-07T15:10:44.157 回答
0

也许这就是你想要的:

ex1<-c('gdgdg','ddd','fffff','ssdsds')
match<-"TROLOLOL"
fuct1<-function(x){
for(i in 1:length(x)){
ex2<-c('xxxx','ddd','ddd','dddd')
    match<-c(match,agrep(x[i],ex2[i],value=TRUE))
  }
 return(match)
}
fuct1(ex1)[-1]
[1] "ddd"

如果你想要 NA 我猜你可以完成这个:)

于 2013-10-07T14:52:15.343 回答