【发布时间】:2019-02-17 20:30:48
【问题描述】:
我有两个原始向量,每个向量都有三个值(总共 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:6。计算
combn(1:6, 3, simplify=FALSE),你就会得到你想要的。