美文网首页
R语言技巧每日分享day4-Reduce递归执行同一个函数

R语言技巧每日分享day4-Reduce递归执行同一个函数

作者: 江湾青年 | 来源:发表于2023-02-23 20:29 被阅读0次

你是不是也有这样的需求:3个向量取交集。以前我都是这样写的:

v1 <- c("a", "b", "c")
v2 <- c("b", "c", "d")
v3 <- c("c", "d", "e")
intersect(intersect(v1, v2), v3)

貌似是能解决问题,如果有300个向量呢?这个时候就要用到Reduce函数了。


用法:Reduce(f, x)

  1. f:代表所有执行的操作函数,例如:取交集函数intersect,也可以自己指定复杂函数
  2. x:一个列表,每个元素代表操作函数的参数

例如:Reduce(f = intersect, x = list(v1, v2, v3)),代表的意思是:

  1. x(即第二个参数)的第一个元素(即v1)和第二个元素(即v2)作为参数传给f(即intersect),结果记为v12
  2. v12x的第三个元素(即v3)作为参数传给f,得到结果作为最终结果

如果x的长度大于3,也是一样的按照上述步骤执行。下面的图可能更容易理解:

Reduce函数

所以,其实Reduce(intersect, list(v1, v2, v3))intersect(intersect(v1, v2), v3)是完全相同执行逻辑。


例2:将pred_list里面的每个元素按顺序连接起来,用“=”隔开

以前我是这样写的:

paste0(pred_list[[1]],'=', pred_list[[2]],'=', pred_list[[3]],'=', pred_list[[4]],'=', pred_list[[5]])

改用Reduce函数可以写成:

Reduce(f = function(x,y){paste0(x,'=',y)},x = pred_list)

参考

https://zhuanlan.zhihu.com/p/511756480

相关文章

  • R语言技巧每日分享day4-Reduce递归执行同一个函数

    你是不是也有这样的需求:3个向量取交集。以前我都是这样写的: 貌似是能解决问题,如果有300个向量呢?这个时候就要...

  • Go语言递归

    递归是以自相似的方式重复项的过程。这同样适用于其它编程语言,在编程语言中允许在函数内调用同一个函数称为递归调用,如...

  • 029_wz_hm_函数的递归

    函数的递归 函数调用自身的编程技巧成为递归 递归函数的特点 特点: 一个函数内部调用自己 函数内部可以调用其他函数...

  • Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归。 递归并不...

  • C语言基础教程之递归

    一文读懂C语言递归算法,C语言基础教程之递归 C语言递归 递归指的是在函数的定义中使用函数自身的方法。 从前有座山...

  • R语言技巧每日分享day8-base R的拼图函数

    在base R中,拼图可以用par()来实现,代码如下: 以上代码表示,在一个绘图页面中绘制m行、n列个尺寸相同的...

  • 递归函数

    1.递归函数概述及用法 一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数 的递归...

  • R语言 函数

    函数是一组组合在一起以执行特定任务的语句。 R语言具有大量内置函数,用户可以创建自己的函数。在R语言中,函数是一个...

  • 《算法图解》读书笔记——递归

    递归 程序调用自身的编程技巧称为递归。每个递归函数有基线条件和递归条件两部分,递归条件是指函数调用自己,基...

  • 函数的递归

    函数调用自身的 编程技巧 称为递归 1.1 递归函数的特点 特点 一个函数 内部 调用自己函数内部可以调用其他函数...

网友评论

      本文标题:R语言技巧每日分享day4-Reduce递归执行同一个函数

      本文链接:https://www.haomeiwen.com/subject/mvynkdtx.html