r - 根据另一个列表对一个列表进行子集化,然后查找最大值的位置

标签 r list conditional-statements max

更新: 我有两个如下所示的列表:

MyList1<-list(c(0,1,1,1),c(1,1,2,0))
MyList2<-list(c(4,5,6,2),c(5,5,2,5))

我想要找到的是 MyList2 中最大值的位置,但仅限于 MyList1 中相应位置 >0 的位置。结果将是:

Result<-list(c(3),c())

为了进一步解释此结果的来源,如果您首先对 MyList1>0 的第二个列表进行子集化,那么您将得到:

list(c(5,6,2),c(5,5,2))

两个列表中的最大元素均为 6,仅存在于列表 1 中:

list(c(6),c())

它在 MyList2 中的位置是:

list(c(3),c())

我不确定达到预期结果的最佳方法。

最佳答案

使用maply,您可以执行以下操作:

m <- max(unlist(MyList2)[unlist(MyList1) > 0])
mapply(function(x,y) which(x == m & y > 0), MyList2, MyList1)

# [[1]]
# [1] 3
# 
# [[2]]
# integer(0)

使用purrr::map2:

purrr::map2(MyList2, MyList1, function(x,y) which(x == m & y > 0))

#or 

purrr::map2(MyList2, MyList1, ~ which(.x == m & .y > 0))

数据

MyList1<-list(c(0,1,1,1),c(1,1,2,0))
MyList2<-list(c(4,5,6,2),c(5,5,2,5))

关于r - 根据另一个列表对一个列表进行子集化,然后查找最大值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71066564/

相关文章:

c++ - 检查 >> 提取的下一个值是字符串还是整数

PowerBI:根据 DATEDIFF 条件正确聚合测量

r - 在变量中搜索字符串并返回匹配的字符串

r - 查找大于矩阵或向量中指定值的矩阵行(按列)

python - 如果另一个列表中的元素差异小于某个值,如何对列表中的元素求和

python [:-1] vs remove

java - 如何以每个用户都有一组属性的方式拆分点上的字符串?

r - ggplot : aes vs aes_string,或如何以编程方式指定列名称?

r - 在 grid.arrange 中保留或设置文本标签与绘图大小之间的比例

c - C 中的十进制值被认为是真的吗?