2013-01-15 26 views
5

Tôi đang cố gắng sử dụng một cách tinh tế để kết hợp hai danh sách (A và B). Mỗi phần tử là một khung dữ liệu. Tôi đang cố gắng để rbind các dataframes A đến dataframes tương ứng trong B. trở lại sau những gì tôi muốn ở combo1:mapply và hai danh sách

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]]) 
} 

Tôi đang cố gắng sử dụng mapply để làm như vậy, nhưng tôi không thể 't làm cho nó hoạt:

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

tôi đã hy vọng ai đó có thể vui lòng giúp tôi

+0

Việc sử dụng 'seq' trong đặc điểm kỹ thuật của A và B cũng có thể có vấn đề. Trong trường hợp đầu tiên nó là thừa, và trong lần thứ hai có vẻ như nó sẽ cho kết quả gây hiểu lầm. Đối với đầu vào vectơ, 'seq_along' được sử dụng. – James

Trả lời

9

Bạn đã tiến rất gần!

## 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

Có lý do nào để trích dẫn tên hàm thay vì chỉ gọi hàm trực tiếp không? tức là 'mapply (rbind, A, B, SIMPLIFY = FALSE)' – Justin

+1

@Justin - Không phải là tôi biết. (Cả hai đều làm việc, vì đối số đầu tiên đó được xử lý bởi 'match.fun()'.) –

+1

Hoặc 'Bản đồ (rbind, A, B)' – hadley

Các vấn đề liên quan