【发布时间】:2014-12-19 19:56:29
【问题描述】:
我有一个映射函数如下,
sub.func <- function(x,y){
if(agrepl(x,y)){
return(x)
}
else{
return(y)
}
}
现在我想应用它来比较两个不同大小的列表,比如myList1 和myList2,这样对于myList1 的每个元素,sub.func 将在myList2 中寻找匹配项,如果yes 将替换为 myList2 的元素。这样myList2 的所有元素都被映射到。如何在不使用循环的情况下实现这一点?可以使用 apply 函数的任何变体吗?
例如
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")
【问题讨论】:
-
包含示例输入和所需输出以明确您想要什么并提供一种测试潜在解决方案的简单方法会很有帮助。见how to make a reproducible example
-
这可能会触发警告并给出不正确的结果,因为
agrepl是一个矢量化函数。 -
返回一个向量结果,我的意思是