R语言中的函数28:Reduce(), Filter(), Find(), Map(), Negate(), Position()

文章目录

介绍

R语言中的Reduce(), Filter(), Find(), Map(), Negate(), Position()是base包中的一些高级函数。随后,很多包也给这些函数提供了更多的扩展。

Reduce()

该函数根据一个二元函数实现累计计算。

r 复制代码
Reduce(f, x, init, right = FALSE, accumulate = FALSE)
  • f:一个二元函数
  • x: 一个向量或者列表
  • init: 初始值
  • right: 逻辑值, T表示从右到左,F表示从左到右
  • accumulate: 逻辑值, T表示显示每一步的结果,F表示只显示最后一步的结果

实例

r 复制代码
f=function(x,y){x+y}
x=list(1,2,3,4)
Reduce(f,x,init = 0,accumulate = T)
# [1]  0  1  3  6 10
Reduce(f,x,init = 1,accumulate = T)
# [1]  1  2  4  7 11

Filter()

r 复制代码
Filter(f, x)
  • f:一个返回逻辑值的一元函数
  • x: 一个向量或者列表

实例

r 复制代码
f=function(x){ is.character(x)}
x=list(1,'2',3,'4')
Filter(f,x)
# [[1]]
# [1] "2"
# 
# [[2]]
# [1] "4"


x <- c(3, 8, 2, 6, 4, 9, 7)
Filter(function(num) { num > 5 }, x)
# [1] 8 6 9 7

Find()

返回满足要求的元素,只返回第一个。

r 复制代码
Find(f, x, right = FALSE, nomatch = NULL)
  • f:一个返回逻辑值的一元函数
  • x: 一个向量或者列表
  • right: 逻辑值, T表示从左到右,F表示从右到左
  • nomatch: 找不到目标值的返回值

实例

r 复制代码
f=function(x){ is.character(x)}
x=list(1,'2',3,'4')
Find(f,x,right = T, nomatch = 'no finding')
# [1] "4"

Find(f,x,right = F, nomatch = 'no finding')
# [1] "2"

Find(f,x=c(1,2,3),right = F, nomatch = 'no finding')
# [1] "no finding"

Map()

r 复制代码
Map(f,x)
  • f:一个k元函数
  • x: 一个向量或者列表

实例

r 复制代码
f=function(x){x^2}
Map(f,x=c(1,2,4,5))
# [[1]]
# [1] 1
# 
# [[2]]
# [1] 4
# 
# [[3]]
# [1] 16
# 
# [[4]]
# [1] 25


f=function(x){sum(x)}
l=list(c(1,2),c(5,6),c(4,8))
Map(f,x=l)
# [[1]]
# [1] 3
# 
# [[2]]
# [1] 11
# 
# [[3]]
# [1] 12

Negate()

r 复制代码
Negate(f)

该函数用于返回一个与f相反的一个函数,T变F,F变T.

实例

r 复制代码
f=function(x){x>3}
f2=Negate(f)
x=c(1,2,3,4,5,6)
f(x)
# [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
f2(x)
# [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE

Position()

该函数用于返回满足条件的元素索引,只返回第一个。

r 复制代码
Position(f, x, right = FALSE, nomatch = NA_integer_)
  • f:一个返回逻辑值的一元函数
  • x: 一个向量或者列表
  • right: 逻辑值, T表示从左到右,F表示从右到左
  • nomatch: 找不到目标值的返回值

实例

r 复制代码
f=function(x){x>3}
x=c(1,2,3,4,5,6)
Position(f,x)
# [1] 4
Position(f,x,right = T)
# [1] 6
相关推荐
echoarts24 分钟前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix43 分钟前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题1 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说1 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔2 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号2 小时前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_2 小时前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty2 小时前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再3 小时前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
Anson Jiang3 小时前
浏览器标签页管理:使用chrome.tabs API实现新建、切换、抓取内容——Chrome插件开发从入门到精通系列教程06
开发语言·前端·javascript·chrome·ecmascript·chrome devtools·chrome插件