我有一个映射函数,如下所示,
sub.func <- function(x,y){
if(agrepl(x,y)){
return(x)
}
else{
return(y)
}
}
现在我想应用它来比较两个不同大小的列表,比如myList1
和myList2
,这样对于myList1
的每个元素,sub.func
都会查找myList2
中的匹配,如果是,则将替换为myList2
的元素。这样myList2
的所有元素都映射到了。如何在不使用循环的情况下实现此目的?可以使用任何应用函数的变体吗?
e.g。
myList1 <- c("a b", "c d", "e f")
myList2 <- c("1", "a b d", "d", "e f g h", "2 3 a c d", "c g")
所需的输出与myList2的长度相同,但尽可能映射到myList1
output <- c("1", "a b", "d", "e f", "c d", "c g")
答案 0 :(得分:0)
您可以使用此{/ p>的Reduce
功能
myList1 <- c("a b", "c d", "e f")
myList2 <- c("1", "a b d", "d", "e f g h", "2 3 a c d", "c g")
Reduce(function(vals, find) {vals[grep(find, vals)]<-find; vals}, myList1, myList2)
# [1] "1" "a b" "d" "e f" "c d" "c g"