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

标签 r list

我在 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/

相关文章:

r - 如何将同心椭圆的边缘与R图中的某些垂直线进行匹配

r - 在 R 数据框中按组应用计算

python - 有没有办法使用 'pattern' 来分解字符串

python - 如何将列表中的连续元素拆分为子列表

java - 比较器类显示错误排序

R: Bootstrap 意味着不在 95% CI 内?

R 找到元组的 "groups"

r - mclapply 与 for 循环绘图 : speed and scalability focus

python - 如何将嵌套字典列表转换为 Pandas 数据框?

Python:同时遍历字典中的所有列表以过滤掉元素