2016-03-24 81 views
0

我已經生成了10個數據幀S1至S10。現在我想用S1到S10以不同的組合創建另外10個數據幀T1到T10。每個T組將有9個S組。r在for循環中以不同組合綁定數據幀

實施例,

T1 = rbind(S2,S3,S4,S5,S6,S7,S8,S9,S10) # If T1 is the set, S1 should not be there.  
. 
. 
. 
T10 = rbind(S1,S2,S3,S4,S5,S6,S7,S8,S9) # T10 not there. 

我怎樣才能產生T1到T10使用用於循環,假設S1至S10的數據幀被提供有相等數目的列和標頭的通過了S1至S10相同。

任何幫助,高度讚賞。如果不是循環,建議任何其他功能。

謝謝。

回答

2

這裏有一種方法

S1 <- data.frame(x=1) 
S2 <- data.frame(x=2) 
S3 <- data.frame(x=3) 

lst <- mget(grep("S\\d+", ls(), value = TRUE)) 
idx <- combn(1:length(lst), length(lst)-1)[, length(lst):1] 
res <- apply(idx, 2, function(x) { 
    do.call(rbind, lst[x]) 
}) 
names(res) <- paste0("T", 1:length(lst)) 
list2env(res, .GlobalEnv) 

apply使用引擎蓋下的環路。