R - 基本理解使用'apply'而不是嵌套循环

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(或任何版本的)用于替换上面的示例代码?

Señ*_*r O 7

要使用lapply,您将运行:

sameList = lapply(list1, function(x) lapply(list2, function(y) if (x==y) x else NULL))
Run Code Online (Sandbox Code Playgroud)

  • 了解R列表和R向量之间的区别将在以后帮助您,并且会发布可重复的示例(您不在问题中定义`list1`或`list2`,因此我们不知道它们是列表还是向量.有一个很大的区别). (3认同)