Tom*_*m A 6 performance for-loop nested r apply
所以我是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
}
Run Code Online (Sandbox Code Playgroud)
换句话说,一些嵌套循环遍历每个列表的每个元素.
我正在学习的是,在循环中连接列表是R中非常低效的过程,这就是使用的原因apply.
那么如何apply(或任何版本的)用于替换上面的示例代码?
要使用lapply,您将运行:
sameList = lapply(list1, function(x) lapply(list2, function(y) if (x==y) x else NULL))
Run Code Online (Sandbox Code Playgroud)