我试图找到受药物影响的共同目标(如下表中的条目编号所示)。
IDARUBICIN <- c(1,5,12,13,18,27,NA,NA,NA,NA,NA,NA)
EPIRUBICIN <- c(1,2,5,6,12,13,17,18,19,21,23,24)
DAUNORUBICIN <- c(1,4,5,11,12,13,16,18,19,27,41,44)
VINBLASTINE <- c(1,4,5,12,13,18,19,27,30,37,39,44)
VINORELBINE <- c(1,5,12,13,18,19,27,41,44,NA,NA,NA)
all <- rbind(IDARUBICIN,EPIRUBICIN,DAUNORUBICIN,VINBLASTINE,VINORELBINE)
> all
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
IDARUBICIN 1 5 12 13 18 27 NA NA NA NA NA NA
EPIRUBICIN 1 2 5 6 12 13 17 18 19 21 23 24
DAUNORUBICIN 1 4 5 11 12 13 16 18 19 27 41 44
VINBLASTINE 1 4 5 12 13 18 19 27 30 37 39 44
VINORELBINE 1 5 12 13 18 19 27 41 44 NA NA NA
我尝试使用正常工作的每一行找到交叉
ans <- Reduce(intersect, list(all[1,],all[2,],all[3,],all[4,],all[5,]))
> ans
[1] 1 5 12 13 18
但我有30行(即30种药物)所以我不能使用这种方法。 有人可以告诉我如何按行找到一个表的相交? 我不能使用上面提到的解决方案,因为它要求我输入每一行而我不想这样做
答案 0 :(得分:4)
Reduce(intersect, data.frame(t(all)))
# [1] 1 5 12 13 18
不需要额外的依赖!
答案 1 :(得分:1)
function findSequence(goal) {
function find(start, history) {
if (start == goal) {
return history;
}
if (start > goal) {
return null;
}
return find(start + 1, "(" + history + " + 1)") ||
find(start * 2, "(" + history + " * 2)");
}
return find(0, "0");
}