Создание вектора ранга или индекса - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть два исходных вектора с тремя значениями каждый (всего 6).Всего существует 20 способов переупорядочить шесть полных значений в два новых набора векторов с тремя элементами в каждом.

Для каждой из этих трех комбинаций мне нужно создать новый вектор, в котором перечислены ранги каждого из элементов относительно рангов всех элементов.Например, значения полного набора [36,39,55,60,70,73] и одна комбинация из трех [36,55,70].Поскольку это подмножество содержит первое, третье и пятое ранжированные значения, мне нужен вектор, который будет [1,3,5].Надеюсь, это имеет смысл.

Я надеялся разобраться с каким-то кодом, связанным с lapply, но не смог заставить его работать.Пожалуйста, помогите!

#list of values for those who took drug
drug<-c(36, 60, 39)

#list of values for those who took placebo
placebo<-c(73, 55, 70)

#all values combined into one vector, in order
drugandplacebo<-c(drug,placebo)
drugandplacebo<-sort(drugandplacebo)
drugandplacebo
order(drugandplacebo)

#list with all all combinations of three for drug
drugcomb <- combn(drugandplacebo,3,simplify = FALSE)
drugcomb<-as.numeric(drugcomb)
drugcomb


#list with all remaining values not in drugcomb
placcomb <- lapply(drugcomb, function(x) drugandplacebo[!drugandplacebo %in% x])
placcomb<-as.numeric(placcomb)
placcomb

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете сделать это, используя функцию lapply и match (), как здесь (это делается с помощью кода кода с упрощенными именами):

#list of values for those who took drug
d <-c (36, 60, 39)

#list of values for those who took placebo
p <- c(73, 55, 70)

#all values combined into one vector, in order
dp <- sort(c(drug,placebo))

#list with all all combinations of three for drug
dpcomb <- combn(drugandplacebo,3,simplify = FALSE)

#list with all remaining values not in drugcomb
ldp <- lapply(dpcomb, match, dp)
ldp
...