因此,我是R的新手(我来自Python背景),在理解如何/何时实现apply
函数(lapply,sapply,rapply等)而不是嵌套循环方面,我仍然遇到一些问题。
例如,假设您想执行一些功能FUN,将列表中的每个元素与另一个列表中的每个元素进行比较。我会写一些类似的东西:
n = 1
m = 1
sameList = NULL
for(i in 1:length(list1)){
for(j in 1:length(list2)){
if(list1[n]==list2[m]){
sameList<-c(sameList, list1[n]}
n = n+1
}
m = m+1
}
换句话说,一些嵌套循环在每个列表的每个元素上进行迭代。
我正在学习的是,在R中连接列表中循环是一个非常低效的过程,这就是为什么使用
apply
的原因。那么,如何用
apply
(或它的任何版本)替换上面的示例代码? 最佳答案
要使用lapply
,您可以运行:
sameList = lapply(list1, function(x) lapply(list2, function(y) if (x==y) x else NULL))