从列表中提取一个元素,该列表的逻辑向量在R中最多包含一个“TRUE”值

6yt4nkrj  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(84)

我想从一个基于逻辑向量的列表中提取一个元素,其中最多一个TRUE值表示所需的元素。有时,逻辑向量可能只包含FALSE值。
请考虑以下示例:

my_list <- list(10, "a", 30)
logical_vector <- c(FALSE, FALSE, TRUE) # or logical_vector <- c(F, F, F)

字符串
下面的解决方案工作,但没有一个是直接足够的我

# Solution no. 1 : using `which`:
if (any(logical_vector)) my_list[[which(logical_vector)]] else list()
# [1] 30

# Solution no. 2 : using `dplyr::first`:
dplyr::first(my_list[logical_vector)]) 
# [1] 30


解决方案必须在logical_vector <- c(F, F, F)

vuktfyat

vuktfyat1#

my_list <- list(10, "a", 30)
logical_vector <- c(FALSE, FALSE, TRUE)

# using ifelse():
ifelse(any(logical_vector), my_list[[which(logical_vector)]], list())  |> unlist()

# or dplyr
dplyr::first(my_list[logical_vector]) |> unlist()

字符串
这将返回:

[1] 30


对于其他载体:

logical_vector <- c(F, F, F)
ifelse(any(logical_vector), my_list[[which(logical_vector)]], list())  |> unlist()

 # or dplyr
 dplyr::first(my_list[logical_vector]) |> unlist()


这将返回:

NULL


但我仍然试图理解你的意思是**"..

相关问题