Вот способ сделать это, но это не так просто.
df <- as.data.frame(do.call(rbind, strsplit(w, "_")), stringsAsFactors = FALSE)
df$V2 <- as.numeric(df$V2)
names(df) <- c("veg", "time")
max_n <- anbaudauer %/% min(df$time)
t <- unique(df$time)
combos <- do.call(rbind, lapply(seq(max_n), function(n)
{
m <- expand.grid(as.data.frame(do.call(cbind, lapply(seq(n), function(x) t))))
m <- m[which(apply(as.matrix(m), 1, sum) == 12), ]
if(length(nrow(m)) > 0)
{
for(i in 1:nrow(m)) m[i, ] <- sort(m[i, ])
m <- unique(m)
if(ncol(m) < max_n) m <- cbind(m, matrix(NA, nrow(m), max_n - ncol(m)))
names(m) <- 1:max_n
return(m)
}
}))
combos <- lapply(split(combos, seq(nrow(combos))),
function(x) {x <- as.numeric(x); x[!is.na(x)]})
combos <- lapply(combos, function(x)
{
expand.grid(as.data.frame(lapply(x, function(y) df$veg[which(df$time == y)]),
stringsAsFactors = FALSE), stringsAsFactors = FALSE)
})
combos <- do.call(rbind, lapply(combos, function(x)
{
for(i in seq(nrow(x))) x[i,] <- sort(x[i,])
x <- unique(x)
if(ncol(x) < max_n)
x <- cbind(x, matrix("", nrow(x), max_n - ncol(x)), stringsAsFactors = FALSE)
names(x) <- seq(max_n)
return(x)
}))
combos <- lapply(split(combos, seq(nrow(combos))),
function(x) { x <- as.character(x[1, ]); x[x != ""] })
names(combos) <- NULL
Это дает правильный результат: список векторов символов длиной 103:
combos
#> [[1]]
#> [1] "tomaten" "tomaten"
#>
#> [[2]]
#> [1] "erdbeeren" "paprika"
#>
#> [[3]]
#> [1] "gurke" "paprika"
#>
#> [[4]]
#> [1] "karotten" "koriander" "tomaten"
#>
#> [[5]]
#> [1] "karotten" "petersilie" "tomaten"
#>
#> [[6]]
#> [1] "koriander" "tomaten" "zucchini"
#>
#> [[7]]
#> [1] "petersilie" "tomaten" "zucchini"
#>
#> [[8]]
#> [1] "salat" "salat" "tomaten"
#>
#> [[9]]
#> [1] "radieschen" "salat" "tomaten"
#>
#> [[10]]
#> [1] "radieschen" "radieschen" "tomaten"
#>
#> [[11]]
#> [1] "karotten" "karotten" "karotten"
#>
#> [[12]]
#> [1] "karotten" "karotten" "zucchini"
#>
#> [[13]]
#> [1] "karotten" "zucchini" "zucchini"
#>
#> [[14]]
#> [1] "zucchini" "zucchini" "zucchini"
#>
#> [[15]]
#> [1] "erdbeeren" "karotten" "salat"
#>
#> [[16]]
#> [1] "erdbeeren" "karotten" "radieschen"
#>
#> [[17]]
#> [1] "erdbeeren" "salat" "zucchini"
#>
#> [[18]]
#> [1] "erdbeeren" "radieschen" "zucchini"
#>
#> [[19]]
#> [1] "gurke" "karotten" "salat"
#>
#> [[20]]
#> [1] "gurke" "karotten" "radieschen"
#>
#> [[21]]
#> [1] "gurke" "salat" "zucchini"
#>
#> [[22]]
#> [1] "gurke" "radieschen" "zucchini"
#>
#> [[23]]
#> [1] "koriander" "paprika" "salat"
#>
#> [[24]]
#> [1] "paprika" "petersilie" "salat"
#>
#> [[25]]
#> [1] "koriander" "paprika" "radieschen"
#>
#> [[26]]
#> [1] "paprika" "petersilie" "radieschen"
#>
#> [[27]]
#> [1] "erdbeeren" "erdbeeren" "koriander"
#>
#> [[28]]
#> [1] "erdbeeren" "erdbeeren" "petersilie"
#>
#> [[29]]
#> [1] "erdbeeren" "gurke" "koriander"
#>
#> [[30]]
#> [1] "erdbeeren" "gurke" "petersilie"
#>
#> [[31]]
#> [1] "gurke" "gurke" "koriander"
#>
#> [[32]]
#> [1] "gurke" "gurke" "petersilie"
#>
#> [[33]]
#> [1] "koriander" "koriander" "koriander" "tomaten"
#>
#> [[34]]
#> [1] "koriander" "koriander" "petersilie" "tomaten"
#>
#> [[35]]
#> [1] "koriander" "petersilie" "petersilie" "tomaten"
#>
#> [[36]]
#> [1] "petersilie" "petersilie" "petersilie" "tomaten"
#>
#> [[37]]
#> [1] "karotten" "karotten" "koriander" "koriander"
#>
#> [[38]]
#> [1] "karotten" "karotten" "koriander" "petersilie"
#>
#> [[39]]
#> [1] "karotten" "karotten" "petersilie" "petersilie"
#>
#> [[40]]
#> [1] "karotten" "koriander" "koriander" "zucchini"
#>
#> [[41]]
#> [1] "karotten" "koriander" "petersilie" "zucchini"
#>
#> [[42]]
#> [1] "karotten" "petersilie" "petersilie" "zucchini"
#>
#> [[43]]
#> [1] "koriander" "koriander" "zucchini" "zucchini"
#>
#> [[44]]
#> [1] "koriander" "petersilie" "zucchini" "zucchini"
#>
#> [[45]]
#> [1] "petersilie" "petersilie" "zucchini" "zucchini"
#>
#> [[46]]
#> [1] "karotten" "koriander" "salat" "salat"
#>
#> [[47]]
#> [1] "karotten" "petersilie" "salat" "salat"
#>
#> [[48]]
#> [1] "karotten" "koriander" "radieschen" "salat"
#>
#> [[49]]
#> [1] "karotten" "petersilie" "radieschen" "salat"
#>
#> [[50]]
#> [1] "karotten" "koriander" "radieschen" "radieschen"
#>
#> [[51]]
#> [1] "karotten" "petersilie" "radieschen" "radieschen"
#>
#> [[52]]
#> [1] "koriander" "salat" "salat" "zucchini"
#>
#> [[53]]
#> [1] "petersilie" "salat" "salat" "zucchini"
#>
#> [[54]]
#> [1] "koriander" "radieschen" "salat" "zucchini"
#>
#> [[55]]
#> [1] "petersilie" "radieschen" "salat" "zucchini"
#>
#> [[56]]
#> [1] "koriander" "radieschen" "radieschen" "zucchini"
#>
#> [[57]]
#> [1] "petersilie" "radieschen" "radieschen" "zucchini"
#>
#> [[58]]
#> [1] "erdbeeren" "koriander" "koriander" "salat"
#>
#> [[59]]
#> [1] "erdbeeren" "koriander" "petersilie" "salat"
#>
#> [[60]]
#> [1] "erdbeeren" "petersilie" "petersilie" "salat"
#>
#> [[61]]
#> [1] "erdbeeren" "koriander" "koriander" "radieschen"
#>
#> [[62]]
#> [1] "erdbeeren" "koriander" "petersilie" "radieschen"
#>
#> [[63]]
#> [1] "erdbeeren" "petersilie" "petersilie" "radieschen"
#>
#> [[64]]
#> [1] "gurke" "koriander" "koriander" "salat"
#>
#> [[65]]
#> [1] "gurke" "koriander" "petersilie" "salat"
#>
#> [[66]]
#> [1] "gurke" "petersilie" "petersilie" "salat"
#>
#> [[67]]
#> [1] "gurke" "koriander" "koriander" "radieschen"
#>
#> [[68]]
#> [1] "gurke" "koriander" "petersilie" "radieschen"
#>
#> [[69]]
#> [1] "gurke" "petersilie" "petersilie" "radieschen"
#>
#> [[70]]
#> [1] "salat" "salat" "salat" "salat"
#>
#> [[71]]
#> [1] "radieschen" "salat" "salat" "salat"
#>
#> [[72]]
#> [1] "radieschen" "radieschen" "salat" "salat"
#>
#> [[73]]
#> [1] "radieschen" "radieschen" "radieschen" "salat"
#>
#> [[74]]
#> [1] "radieschen" "radieschen" "radieschen" "radieschen"
#>
#> [[75]]
#> [1] "karotten" "koriander" "koriander" "koriander" "koriander"
#>
#> [[76]]
#> [1] "karotten" "koriander" "koriander" "koriander" "petersilie"
#>
#> [[77]]
#> [1] "karotten" "koriander" "koriander" "petersilie" "petersilie"
#>
#> [[78]]
#> [1] "karotten" "koriander" "petersilie" "petersilie" "petersilie"
#>
#> [[79]]
#> [1] "karotten" "petersilie" "petersilie" "petersilie" "petersilie"
#>
#> [[80]]
#> [1] "koriander" "koriander" "koriander" "koriander" "zucchini"
#>
#> [[81]]
#> [1] "koriander" "koriander" "koriander" "petersilie" "zucchini"
#>
#> [[82]]
#> [1] "koriander" "koriander" "petersilie" "petersilie" "zucchini"
#>
#> [[83]]
#> [1] "koriander" "petersilie" "petersilie" "petersilie" "zucchini"
#>
#> [[84]]
#> [1] "petersilie" "petersilie" "petersilie" "petersilie" "zucchini"
#>
#> [[85]]
#> [1] "koriander" "koriander" "koriander" "salat" "salat"
#>
#> [[86]]
#> [1] "koriander" "koriander" "petersilie" "salat" "salat"
#>
#> [[87]]
#> [1] "koriander" "petersilie" "petersilie" "salat" "salat"
#>
#> [[88]]
#> [1] "petersilie" "petersilie" "petersilie" "salat" "salat"
#>
#> [[89]]
#> [1] "koriander" "koriander" "koriander" "radieschen" "salat"
#>
#> [[90]]
#> [1] "koriander" "koriander" "petersilie" "radieschen" "salat"
#>
#> [[91]]
#> [1] "koriander" "petersilie" "petersilie" "radieschen" "salat"
#>
#> [[92]]
#> [1] "petersilie" "petersilie" "petersilie" "radieschen" "salat"
#>
#> [[93]]
#> [1] "koriander" "koriander" "koriander" "radieschen" "radieschen"
#>
#> [[94]]
#> [1] "koriander" "koriander" "petersilie" "radieschen" "radieschen"
#>
#> [[95]]
#> [1] "koriander" "petersilie" "petersilie" "radieschen" "radieschen"
#>
#> [[96]]
#> [1] "petersilie" "petersilie" "petersilie" "radieschen" "radieschen"
#>
#> [[97]]
#> [1] "koriander" "koriander" "koriander" "koriander" "koriander" "koriander"
#>
#> [[98]]
#> [1] "koriander" "koriander" "koriander" "koriander" "koriander" "petersilie"
#>
#> [[99]]
#> [1] "koriander" "koriander" "koriander" "koriander" "petersilie" "petersilie"
#>
#> [[100]]
#> [1] "koriander" "koriander" "koriander" "petersilie" "petersilie" "petersilie"
#>
#> [[101]]
#> [1] "koriander" "koriander" "petersilie" "petersilie" "petersilie" "petersilie"
#>
#> [[102]]
#> [1] "koriander" "petersilie" "petersilie" "petersilie" "petersilie" "petersilie"
#>
#> [[103]]
#> [1] "petersilie" "petersilie" "petersilie" "petersilie" "petersilie" "petersilie"