Tôi có một chuỗi có độ dài khác nhau, ví dụ: một cái gì đó như:Tách chuỗi trình tự có độ dài không xác định thành một số bộ nhất định trong R
items <- 1:4
Tôi muốn chia nó thành mọi tổ hợp có thể là n
số bộ. Vì vậy, nói n
là hai, tôi muốn quay trở lại:
Set A Set B
----- -----
1 2 3 4
1 2 3 4
1 2 3 4
1 3 2 4
, vv Việc bố trí trong phạm vi bộ không quan trọng ví dụ: tập {1
, 2
, 3
} cũng giống như {2
, 1
, 3
}. Bộ không được để trống.
tốt nhất tôi có thể đưa ra (sử dụng permn
từ gói combinat
) là:
n <- 2
r <- 1:length(items)
arrangements <- NULL
for (i in 1:(n-1)) {
A <- r[(1:i)]
B <- r[-(1:i)]
arrangements <- c(arrangements, apply(do.call(rbind, permn(1:length(items))), 1, function(z) list(z[A], z[B])))
}
Đó là khá vô dụng vì nó sẽ trả về bộ mà đều bình đẳng tức là {1
, 2
, 3
} và {2
, 1
, 3
} và không đủ linh hoạt để xử lý các giá trị khác nhau của n
. Bất cứ ai có bất kỳ ý tưởng làm thế nào tôi có thể làm điều này? Cảm ơn.