2013-01-15 39 views
5

我試圖用mapply來組合兩個列表(A和B)。每個元素都是一個數據幀。 我想在A到rbind的dataframes到B的相應dataframes以下回報什麼,我想在COMBO1:mapply和兩個列表

num = 10 
A<-list() 
B<-list() 
for (j in 1:num){ 
    A[[j]] <- as.data.frame(matrix(seq(1:9),3,3)) 
    B[[j]] <- as.data.frame(matrix(seq(10:18),3,3)) 
} 

combo1<-list() 
for (i in 1:num){ 
    combo1[[i]] <-rbind(A[[i]], B[[i]]) 
} 

我試圖用mapply做同樣的,但我可以「T得到它的工作:

combo2<-list() 
combo2<-mapply("rbind", A, B) 

我希望有人能幫我

+0

在規範A和B中使用'seq'也可能有問題。在第一種情況下,這是多餘的,而在第二種情況下,它看起來會產生令人誤解的結果。對於矢量輸入,使用'seq_along'。 – James

回答

9

你非常接近!

## Make this a more _minimal_ reproducible example 
A <- A[1:2] 
B <- B[1:2] 

## Override default attempt to reduce results to a vector, matrix, or other array 
mapply("rbind", A, B, SIMPLIFY=FALSE) 
# [[1]] 
# V1 V2 V3 
# 1 1 4 7 
# 2 2 5 8 
# 3 3 6 9 
# 4 1 4 7 
# 5 2 5 8 
# 6 3 6 9 
# 
# [[2]] 
# V1 V2 V3 
# 1 1 4 7 
# 2 2 5 8 
# 3 3 6 9 
# 4 1 4 7 
# 5 2 5 8 
# 6 3 6 9 
+0

是否有任何理由引用函數名稱而不是直接調用函數?即'mapply(rbind,A,B,SIMPLIFY = FALSE)' – Justin

+1

@Justin - 不是我所知道的。 (它們都起作用,因爲第一個參數由'match.fun()'處理)。 –

+1

或'Map(rbind,A,B)' – hadley