根据另一个列表中的值将函数应用于列表

问题描述 投票:0回答:1

这可能是重复的,但我似乎没有找到这个具体案例。

假设我有两个列表:

list1 <- as.list(c(5, 8, 9))
list2 <- as.list(c(8, 10, 11))

我知道如何将函数应用于一个列表。假设我想将以下内容应用于

list1
:

lapply(list1, function(x){x+100})

但是如果我只想将这样的函数应用于

list1
,当
list2
中对应的值为
>=10
时怎么办?所以我的结果是:

[[1]]
[1] 5

[[2]]
[1] 108

[[3]]
[1] 109

更重要的是,只有当

list1
中的值为
list2
时,如何才能将
list2
中的值与 100 相加并减去
>=10
中的值?

类似下面的东西,显然不起作用:

lapply(list1, list2, function(x,y){if (y>=10) x+100-y})

谢谢!

r list function apply
1个回答
0
投票

我认为您正在寻找

Map()
来迭代两个列表:

Map(
    \(x1, x2) if (x2 >= 10) x1 + 100 else x1,
    list1,
    list2
)
# [[1]]
# [1] 5

# [[2]]
# [1] 108

# [[3]]
# [1] 109

或者第二种情况

Map(\(x, y) if (y >= 10) x + 100 - y else x, list1, list2)

© www.soinside.com 2019 - 2024. All rights reserved.