我试图以这种方式比较来自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'(第二个)等等......结果我想要一些东西as(NA,ddd,NA,NA)。我的代码的结果只是NA。 谢谢你的帮助。
答案 0 :(得分: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)
答案 1 :(得分:1)
认为您正在寻找mapply
mapply(agrep,ex1,ex2,value=TRUE)
但这假设您的2个向量具有相同的长度。
答案 2 :(得分: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"
如果您想要NAs,我可以完成此操作:)