gpt4 book ai didi

r - 识别子列表中的唯一元素并更改

转载 作者:行者123 更新时间:2023-12-02 05:40:58 24 4
gpt4 key购买 nike

我在 R 中有以下“列表”:

[[1]]
[1] 17336 5246 8597 5246 17878 19701

[[2]]
[1] 19701 37748 18155 5246 8597

[[3]]
[1] 12297 19701 17878 5246 17336 8597 17878

[[4]]
[1] 17878 37748 19701 37748 12297 8597

[[5]]
[1] 19701 37748 19701 37748 19701 5246

[[6]]
[1] 19701 6254 17336 18155 19701 12297

[[7]]
[1] 19701 17878 18155 17878 18155 19701 8597

[[8]]
[1] 8597 18155

[[9]]
[1] 12450 18155 5246 8597 5246 8597

[[10]]
[1] 18155 4105 6254 17878 12297 5246

[[11]]
[1] 8597 12297

[[12]]
[1] 17878 5246 18155 17878 12297 8597

[[13]]
[1] 8597 18155

[[14]]
[1] 5246 37748 18155 12450 18155 8597

[[15]]
[1] 19701 37748 6254 8597 6254 8597 12297

[[16]]
[1] 19701 17878 4105 37748 18155 19701 12450 12297

[[17]]
[1] 6254 12450 37748 17878 5246 17878 8597

[[18]]
[1] 8597 12297 18155 5246 18155 12297

[[19]]
[1] 4105 37748 17878 5246 12450 5246 12450

[[20]]
[1] 17878 20467

[[21]]
[1] 20467

[[22]]
[1] 12450 37748 12450 17878 12450 12297

[[23]]
[1] 6254 17878 12450 12297 5 4105 27697 4105 27697

[[24]]
[1] 4105 37748 17878 20467 12450 17878 27697

[[25]]
[1] 5246 27697 5246 17336 17878 5246 12297 20467

我想找到最快的方法来查看此列表并查找是否有任何元素是特定值,将其称为“引用值”。例如,如果引用值为“5”,那么我想识别元素 [[23]] 中有一个“5”。我想做的是改变那个元素,让它变成:

[[23]] 4105 27697  4105 27697

最佳答案

使用@SymbolixAU 的数据:

lapply(lst, function(x) tail(x, -Position(isTRUE, x==5, nomatch=-Inf)) )
#[[1]]
#[1] 1 2 3
#
#[[2]]
#[1] 2 3 4
#
#[[3]]
#numeric(0)
#
#[[4]]
#[1] 6

解释它是如何工作的:
1) 中间的 Position 部分只返回第一次检测到 5 时索引的负数,即:

sapply(lst, function(x) -Position(isTRUE, x==5, nomatch=-Inf) )
#[1] Inf Inf -3 -2

2) tail(x, -n) 只是从向量中删除前 n 值。当使用 Inf 运行时,不会删除任何内容。因此,当没有找到 5 时,为什么在实例中使用 Inf

关于r - 识别子列表中的唯一元素并更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135205/

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