我想做一个类似apply / map的函数,但使用列表中的一个元素作为调用函数的操作数.

我给你一个更好的例子,假设我想减go 一个列表的每个元素,列表的第一个元素,即:x[i] = x[i] - x[1].

如果我理解正确的话,当使用Apply调用函数时,该函数只获取列表的当前元素x[i],但我需要列表本身来访问第一个元素(x[1]),并将其减go 当前元素(x[i]).

我希望有一种方法可以为应用函数提供额外的参数或对列表本身的访问.

推荐答案

lapply可以接受多个参数.

考虑列表lst

> lst
$X1
[1] 1 2 3

$X2
[1] 4 5 6

$X3
[1] 7 8 9

$X4
[1] 10 11 12

第一个是hot元素.

> h <- 1

然后,我们提供不带该元素的lst作为迭代的第一个参数,并提供lst[[h]]作为函数后面的第二个参数.与Map形成对比的是,后者将始终作为一个整体通过.

> lapply(lst[-h], \(x, y) x - y, l[[h]])
$X2
[1] 3 3 3

$X3
[1] 6 6 6

$X4
[1] 9 9 9

如果你的目标是更换所有,但热元素,做

> lst[-h] <- lapply(lst[-h], \(x, d) x - d[[h]], lst)
> lst
$X1
[1] 1 2 3

$X2
[1] 3 3 3

$X3
[1] 6 6 6

$X4
[1] 9 9 9

Data:

> dput(lst)
list(X1 = 1:3, X2 = 4:6, X3 = 7:9, X4 = 10:12)

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

在(g)子中使用asserable字符

在发布到PowerBI Service时,是否可以使用R脚本作为PowerBI的数据源?

用黄土法确定区间

整数成随机顺序与约束R?

如何在kableextra调用cell_spec()中忽略NA?

为了网络分析目的,将数据框转换为长格式列联表

如何从容器函数中提取conf并添加到ggplot2中?

Data.table';S GForce-将多个函数应用于多列(带可选参数)

函数可以跨多个列搜索多个字符串并创建二进制输出变量

在R中创建连续的期间

在具有多个响应变量的比例堆叠条形图上方添加总计

按两个因素将观测值分组后计算单独的百分比

如何获取R chromote中的当前URL?

GOGPLATE geom_boxploy色彩疯狂

如何将字符类对象中的数据转换为R中的字符串

希望解析和复制R中特定模式的数据

R:改进实现简单模型

修复标签重叠和ggploy内的空间