如何通过列表中的某个值返回列表索引?

时间:2019-06-18 07:24:22

标签: r api

假设我创建了一个这样的列表:

y <- split(USArrests , USArrests$Murder)

如何返回包含此列表中某些值的列表的索引:

例如: 在其中一项(2.7)中,强奸等于14.9

如何在此处返回2.7值或索引?

2 个答案:

答案 0 :(得分:1)

假设数据已经拆分,则可以

names(y)[sapply(y, function(x) any(x$Rape == 14.9))]
#[1] "2.7" "6.3"

如果不拆分数据,它将变成简单的子集

USArrests$Murder[USArrests$Rape == 14.9]

我们也可以使用Filter

names(Filter(function(x) any(x$Rape == 14.9), y))

以及使用purrr::keep

的变体形式
names(purrr::keep(y, ~any(.$Rape == 14.9)))

答案 1 :(得分:0)

我们可以将sapply%in%一起使用

names(y)[sapply(y, function(x) 14.9 %in% x$Rape)]
#[1] "2.7" "6.3"

或者使用map中的purrr

library(purrr)
map_lgl(y, ~ 14.9 %in% .x$Rape) %>% 
     which %>% 
     names
#[1] "2.7" "6.3"