如何根据R中data.frame中给出的数据获取列表中所有元素的索引?

如何根据R中data.frame中给出的数据获取列表中所有元素的索引?,r,R,我有一个数据框和一个列表,如下所示: > df value 1 5 2 25 3 6 4 70 并列出: > y [[1]] [1] 5 6 70 25 [[2]] [1] 6 70 5 25 如何使列表返回每个元素的索引,以便: > y [[1]] [1] 1 3 4 2 [[2]] [1] 3 4 1 2 我

我有一个数据框和一个列表,如下所示:

> df
               value
1                5
2               25
3                6
4               70
并列出:

> y

[[1]]
[1]  5 6 70 25

[[2]]
[1]  6 70 5 25
如何使列表返回每个元素的索引,以便:

> y

[[1]]
[1]  1 3 4 2

[[2]]
[1]  3 4 1 2

我们可以使用
match
通过循环
列表
并与'df'的'value'列匹配来获取索引

lapply(y, function(x) match(x, df$value))
#[[1]]
#[1] 1 3 4 2

#[[2]]
#[1] 3 4 1 2

或者没有匿名函数

lapply(y, match, df$value)
数据
df假设末尾注释中的数据:

Map(match, y, df)
给予:

[[1]]
[1] 1 3 4 2

[[2]]
[1] 3 4 1 2
此处的数据不需要,但如果您的
df
实际上有多个列,请指定
value
列是这样使用的:

Map(match, y, df["value"])

Lines@WeiShung只要我们与单个列“df$value”匹配,它仍然可以工作。对于大数据,
vapply
会更快
vapply(y,function(x)FUN=match(x,df$value),FUN.value=integer(length(y[[1]])
谢谢。我发现了一个问题。如果值列中的“6”现在是5,并且列表中的一个包含2“5”,您将如何执行此操作。我希望它们显示索引“1”、“3”,而不仅仅是“1”。
Map(match, y, df["value"])
Lines <- "               value
1                5
2               25
3                6
4               70"
df <- read.table(text = Lines)

y <- list(c(5, 6, 70, 25), c(6, 70, 5, 25))