2013-08-23 98 views
5

Giả sử tôi có hai mảng, array1 và array2, trông giống nhưMerge Hai Mảng trong R

array1

 45 46 47 48 49 50 
     1.0 1.5 1.3 1.2 0.9 1.1 

array2

 45 46 47 48 49 50 
     2.5 5.5 4.5 5.8 1.5 8.4 

và tôi muốn kết hợp chúng thành một dữ liệu khung trông giống như:

 1.0 2.5 
     1.5 5.5 
     1.3 4.5 
     1.2 5.8 
     0.9 1.5 
     1.1 8.4 

Những con số 45-50 không quan trọng.

+0

Bạn có thể 'dput' mảng của bạn để chúng tôi không đoán là cấu trúc thực tế của đối tượng của bạn không? – A5C1D2H2I1M1N2O1R2T1

+0

Chúng tôi đã trả lời câu hỏi của bạn chưa? – dayne

Trả lời

1

Bạn có thể kết hợp ?rbind?t hoặc chỉ sử dụng ?cbind tùy thuộc vào định dạng dữ liệu của bạn.

Ví dụ:

new.array <- t(rbind(array1,array2)) 

hoặc

new.array <- cbind(array1,array2) 

hoặc

new.arrray <- data.frame(array1,array2) 

Nếu bạn có hai vectơ, cbind là cách tốt nhất để đi. Tuy nhiên, giả sử bạn có hai khung dữ liệu. ví dụ:

array1 <- t(data.frame(array1=c(1.0,1.5,1.3,1.2,0.9,1.1))) 
array2 <- t(data.frame(array2=c(2.5,5.5,4.5,5.8,1.5,8.4))) 

Sử dụng cbind sẽ không cung cấp cho các đầu ra mong muốn, và bạn sẽ cần phải kết hợp trbind.

> cbind(array1,array2) 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] 
array1 1 1.5 1.3 1.2 0.9 1.1 2.5 5.5 4.5 5.8 1.5 8.4 

> t(rbind(array1,array2)) 
    array1 array2 
[1,] 1.0 2.5 
[2,] 1.5 5.5 
[3,] 1.3 4.5 
[4,] 1.2 5.8 
[5,] 0.9 1.5 
[6,] 1.1 8.4 
8
array1 <- c(1.0,1.5,1.3,1.2,0.9,1.1) 
array2 <- c(2.5,5.5,4.5,5.8,1.5,8.4) 

result = cbind(array1, array2) 

Trong trường hợp bạn không muốn thấy bất kỳ tên cột hoặc tên hàng (như được đăng trong câu hỏi của bạn), bạn nên làm như sau:

result = as.matrix(cbind(array1, array2)) 
dimnames(result) <-list(rep("", dim(result)[1]), rep("", dim(result)[2])) 

Bạn nhận:

> result 

    1.0 2.5 
    1.5 5.5 
    1.3 4.5 
    1.2 5.8 
    0.9 1.5 
    1.1 8.4 
+2

'as.matrix (cbind (...))' khá dư thừa ở đây, phải không? Phương thức 'cbind' mặc định là tạo' ma trận'. Có một phương thức riêng biệt cho 'data.frame', nhưng điều đó không được gọi trong các trường hợp như thế này. – A5C1D2H2I1M1N2O1R2T1

-2

Bạn có thể hợp nhất vào mảng theo mã đã cho bên dưới và có thể hiển thị ở định dạng bắt buộc.

  for (int i = 45; i <=50; i++) 
      { 

       float[] merge = { array1[i], array2[i] }; 

      } 
      // to display in required format 

      for (int j =0; i <merge.Length; i++) 
      { 

       Console.WriteLine(merge[i]); 

      } 
+0

Tôi tin rằng thẻ OP đang tìm kiếm giải pháp bằng cách sử dụng r. – dayne

+0

Xem thẻ 'R' câu hỏi là về R. –