找出给定数字在 R 中的向量系列中的位置

  • 本文关键字:向量 系列 位置 数字 r
  • 更新时间 :
  • 英文 :


我有三个变量a1,a2和a3。

a1 <- 1:10
a2 <- 11:20
a3 <- 21:30

然后我有另一个变量叫my.numbers <- c(1, 20, 22,11)

我想找出这些号码的位置。所以我想要的结果是:

1 in a1
20 in a2
22 in a3
11 in a2

关于如何轻松完成的任何建议?

通过几个purrr::map函数,您可以跨数字工作,然后在数字中跨a向量工作。

我正在用tibble::lst制作一个a向量的列表,因为它将列表的名称设置为进入其中的变量的名称 - 对于这样的事情来说很方便,因为列表项的名称很重要。

library(tidyverse)
a_list <- lst(a1, a2, a3)
my.numbers %>%
map_chr(function(num) {
which_a <- map_lgl(a_list, ~(num %in% .))
a_name <- names(a_list)[which_a]
str_glue("{num} in {a_name}")
})
#> [1] "1 in a1"  "20 in a2" "22 in a3" "11 in a2"

您可以在map_lgl之后使用match或其他函数 - 我让它很冗长,以便更清楚地了解发生了什么。

为了记录,这里是你如何得到问题的确切结果。

a1 <- 1:10
a2 <- 11:20
a3 <- 21:30
L<-list("a1"=a1,"a2"=a2,"a3"=a3)
my.numbers <- c(1, 20, 22, 11)
func<-function(item){
my.numbers[which(my.numbers %in% item)]
}
Fin<-lapply(L, func)
for(i in 1:length(Fin)){
Index<-unlist(Fin[i])
name<-paste("a",i, sep="")
for(i in 1:length(Index)){
print(paste(Index[i], "in", name))
}
}
[1] "1 in a1"
[1] "20 in a2"
[1] "11 in a2"
[1] "22 in a3"

最新更新