我有一个嵌套列表,have_list.中间是一个包含四个整数向量的列表,abcd.

对于abcd,每个都有一个唯一的cutoff值.我想找出整数大于相关截止值时的第一个位置.

如果a-d有相同的cutoff,我可以这样做:

rapply(have_list, function(x) which.max(x > cutoff), how = "list")

My specific question是如何使用a-d的各个截止值,如果可能的话,不需要for个循环.我似乎在网上找不到任何东西,不过如果我忽略了前面的问题,我深表歉意.

Sample data

cutoff <- c(a = 5, b = 17, c = 11, d = 7)

set.seed(05062020)
have_list <- list(Outer1 = list(a = sample(1:25, 10),
                                b = sample(1:25, 10),
                                c = sample(1:25, 10),
                                d = sample(1:25, 10)),
                  Outer2 = list(a = sample(1:25, 10),
                                b = sample(1:25, 10),
                                c = sample(1:25, 10),
                                d = sample(1:25, 10)))

Desired data

want_list <- list(Outer1 = list(a = 2, b = 2, c = 1, d = 1),
                  Outer2 = list(a = 1, b = 4, c = 4, d = 1))

推荐答案

您可以使用lapply在"外部"列表中移动,使用Map将每个内部列表与相应的截止值进行比较:

lapply(have_list, \(x) {Map(\(lst, cuts) {
  return(which(lst > cuts)[1])
}, x, cutoff)})

以下是该输出的str个参数:

List of 2
 $ Outer1:List of 4
  ..$ a: int 2
  ..$ b: int 2
  ..$ c: int 1
  ..$ d: int 1
 $ Outer2:List of 4
  ..$ a: int 1
  ..$ b: int 4
  ..$ c: int 4
  ..$ d: int 1

R相关问答推荐

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

使用ggplot 2根据R中的类别排列Likert比例gplot

R创建一个数据透视表,计算多个组的百分比

如何写一个R函数来旋转最后n分钟?

如何在区分不同条件的同时可视化跨时间的连续变量?

bslib::card_header中的shine::downloadButton,图标而不是文本

错误:非常长的R行中出现意外符号

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

从圆到R中的多边形的标绘雷达图

Ggplot2中geom_tile的动态zoom

如何在R中平滑地绘制线图(不拟合)?

从多层嵌套列表构建Tibble?

减go R中列表的所有唯一元素对

使用LAG和dplyr执行计算,以便按行和按组迭代

使用一个标签共享多个组图图例符号

从两个数据帧中,有没有办法计算R中一列的唯一值?

将R中对象的CSV数组转换为JSON数组

如何在GGPlot中控制多个图例和线型

用LOOCV进行K近邻问题