gpt4 book ai didi

r - 在 R 中,使用向量化在列表中查找向量的元素

转载 作者:行者123 更新时间:2023-12-04 09:27:56 24 4
gpt4 key购买 nike

我有一个向量 v1

v1 = c(1, 200, 4000)

我想以矢量方式在列表 L1 中找到 v1 元素的索引,即没有循环,其中
> L1
[[1]]
[1] 1 2 3 4

[[2]]
[1] 100 200 300 400

[[3]]
[1] 1000 2000 3000 4000

输出应该是 c(1, 2, 4)。

有没有办法在不使用循环或应用的情况下做到这一点(这在计算上与使用循环相同?)我必须对很长的向量执行此操作。

最佳答案

我们可以做的

sapply(L1, function(x) which(x %in% v1))
#[1] 1 2 4

或与 Vectorize
Vectorize(function(x) which(x %in% v1))(L1)
#[1] 1 2 4

如果每个元素都针对另一个元素的相应元素进行检查
mapply(function(x, y) which(x %in% y), L1, v1)
#[1] 1 2 4

正如@nicola 提到的 match也可用于获取第一个索引。如果有重复元素,则 which会很有用
mapply(match, v1, L1)
#[1] 1 2 4

或使用 purrr::map2
purrr::map2_int(L1, v1, ~ .x %in% .y %>%
which)
#[1] 1 2 4

关于r - 在 R 中,使用向量化在列表中查找向量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com