Как получить индекс всех элементов в списке в соответствии с данными, приведенными в data.frame в R? - PullRequest
2 голосов
/ 13 марта 2020

У меня есть фрейм данных и список, который таков:

> 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

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Предполагая данные в примечании в конце:

Map(match, y, df)

, давая:

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

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

Не требуется с данными здесь, но если ваш df на самом деле имеет более чем один столбец указывает, что столбец value используется следующим образом:

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))
2 голосов
/ 13 марта 2020

Мы можем использовать match для получения индекса, выполняя цикл по list и сопоставляя его со столбцом 'value' в 'df'

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 <- data.frame(value = c(5, 25, 6, 70))
y <- list(c(5, 6, 70, 25), c(6, 70, 5, 25))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...