我有一个数据框......
a <- c(6,9,12,13,15,20)
b <- c(1,12,36,2,48,3)
c <- c(50,0,2,35,12,60)
df = data.frame(a,b,c)
# a b c
#1 6 1 50
#2 9 12 0
#3 12 36 2
#4 13 2 35
#5 15 48 12
#6 20 3 60
我想做的是
如果没有更高的数字,该函数只会终止并仅报告最后一个更高的数字
输出是一个数据框,其中每列是组合
这可以在R中作为一个函数吗?
输出可以是以下格式的数据框
c1 <- c(6,12,50)
c2 <- c(6,36,50)
c3 <- c(6,48,50)
c4 <- c(9,12,50)
c5 <- c(9,36,50)
c6 <- c(9,48,50)
c7 <- c(12,36,50)
c8 <- c(12,48,50)
c9 <- c(13,36,50)
c10 <- c(13,48,50)
c11 <- c(15,36,50)
c12 <- c(15,48,50)
c13 <- c(20,36,50)
c14 <- c(20,48,50)
etc
df1 <- data.frame(c1, c2, c3, c4, etc)
# c1 c2 c3 c4 ...
#1 6 6 6 9 ...
#2 12 36 48 12 ...
#3 50 50 50 50 ...
答案 0 :(得分:2)
这为您提供了从first
列到last
列的数字增加的所有组合
df1 <- do.call(`expand.grid`,lapply(df, unique))
df2 <- df1[Reduce(`&`,lapply(1:(ncol(df1)-1),
function(i) df1[,i+1]>df1[,i])),]
head(df2)
# a b c
#7 6 12 50
#8 9 12 50
#13 6 36 50
#14 9 36 50
#15 12 36 50
#16 13 36 50
dim(df2)
#[1] 30 3