创建排名或索引的向量

问题描述 投票:1回答:1

我有两个原始向量,每个向量有三个值(总共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
r vector z-index rank
1个回答
0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.