Nếu tôi có hai vectơ có cùng độ dài A<-c(5,10)
và B<-c(7,13)
làm cách nào tôi có thể dễ dàng biến hai vectơ này thành một vector tuple đơn i. e. c((5,7),(7,13))
?Tạo các bộ dữ liệu từ hai vectơ
Trả lời
Những người khác có danh sách được đề cập. Tôi thấy khả năng khác:
cbind(A, B) # makes a column-major 2x2-"vector"
rbind(A, B) # an row major 2x2-"vector" which could also be added to an array with `abind`
Đó là alsp có thể để bảo vệ "nguồn gốc" của họ
AB <- cbind(A=A, B=B)
array(c(AB,AB+10), c(2,2,2))
, , 1
[,1] [,2]
[1,] 5 7
[2,] 10 13
, , 2
[,1] [,2]
[1,] 15 17
[2,] 20 23
> abind(array(c(AB,AB+10), c(2,2,2)), AB+20)
, , 1
A B
[1,] 5 7
[2,] 10 13
, , 2
A B
[1,] 15 17
[2,] 20 23
, , 3
A B
[1,] 25 27
[2,] 30 33
Tôi không chắc chắn này là chính xác những gì bạn đang tìm kiếm, nhưng:
list(A, B)
mang đến cho bạn một cấu trúc như thế này:
> str(list(A, B))
List of 2
$ : num [1:2] 5 10
$ : num [1:2] 7 13
và là nghĩa đen đại diện như này:
dput (danh sách (A, B)) danh sách (c (5, 10), c (7, 13))
... gần như kết quả cuối cùng được đề xuất như bạn có thể nhận được, tôi nghĩ vậy.
Danh sách trong R về bản chất là một vectơ của bất kỳ thứ gì bạn muốn.
Nếu đó không phải là những gì bạn đang tìm kiếm, có thể hữu ích nếu bạn có thể mở rộng chính xác những gì bạn muốn làm với vectơ này.
+1 'list()' chắc chắn có vẻ là kiểu đối tượng phù hợp nhất để sử dụng. –
@Matt, tôi nghĩ nó được xoay từ những gì anh ta muốn - hàng cho cột và ngược lại. Không chắc chắn mặc dù! –
@Ed Các 'str()' bit chỉ là một đại diện dễ đọc - danh sách chính nó không có hàng hoặc cột ở tất cả, thực sự. Nó theo nghĩa đen là một vector chứa các bộ dữ liệu. Để lặp qua các bộ dữ liệu, danh sách chắc chắn là cách để đi. Tuy nhiên, không chắc chắn ứng dụng ở đây là gì. –
vector tuple của bạn c((5,7),(7,13))
không phải là cú pháp hợp lệ. Tuy nhiên, lời nói của bạn khiến tôi nghĩ rằng bạn đang nghĩ đến một thứ như python's zip
. Bạn muốn các bộ dữ liệu của bạn được thể hiện bằng R như thế nào? R có loại không đồng nhất (đệ quy) list
và loại đồng nhất vector
; không có các loại vô hướng (có nghĩa là, các kiểu chỉ giữ một giá trị), chỉ các vectơ có độ dài 1 (phần nào là một sự đơn giản hóa).
Nếu bạn muốn tuples của bạn sẽ được hàng của một ma trận (tất cả cùng loại, mà họ đang ở đây):
rbind(A,B)
Nếu bạn muốn có một danh sách các vectơ
mapply(c, A, B, SIMPLIFY=FALSE)
Nếu bạn muốn có một danh sách liệt kê (đó là những gì bạn sẽ cần nếu A
và B
không cùng loại)
mapply(list, A, B, SIMPLIFY=FALSE)
Kết hợp tất cả lại với nhau:
> A<-c(5,10)
> B<-c(7,13)
>
> cbind(A,B)
A B
[1,] 5 7
[2,] 10 13
> mapply(c, A, B, SIMPLIFY=FALSE)
[[1]]
[1] 5 7
[[2]]
[1] 10 13
> mapply(list, A, B, SIMPLIFY=FALSE)
[[1]]
[[1]][[1]]
[1] 5
[[1]][[2]]
[1] 7
[[2]]
[[2]][[1]]
[1] 10
[[2]][[2]]
[1] 13
R có một cái gì đó gọi là loại nguyên tử (hoặc chế độ). Xem '? Nguyên tử'. Tôi nghĩ rằng tôi biết những gì bạn có nghĩa là (giá trị vô hướng), nhưng những người khác có thể bối rối hơn. –
@JoshuaUlrich Bạn đúng là "nguyên tử" không phải là lựa chọn tốt nhất của từ vì nó có ý nghĩa cụ thể trong R. Ý tưởng tôi cố gắng đạt được là không có loại nào chứa _only_ một giá trị duy nhất. Nếu bạn có một gợi ý của một cách tốt hơn để cụm từ đó, tôi sẽ rất vui khi xem xét nó. –
Tôi thích [vô hướng] (http://en.wikipedia.org/wiki/Scalar_%28computing%29). –
Tôi thấy những gì bạn muốn thực hiện (vì tôi có cùng một vấn đề)!
Tại sao không sử dụng số phức, vì họ là về cơ bản không có gì khác nhưng hai số chiều và họ là một loại chính thức dữ liệu trong R với tất cả các phương pháp cần thiết có sẵn:
A <- complex(real=5,imaginary=10)
B <- complex(real=7,imaginary=13)
c(A,B)
## [1] 5+10i 7+13i
matrix(c(A,B),ncol=1)
## [,1]
## [1,] 5+10i
## [2,] 7+13i
- 1. Tạo khung dữ liệu từ hai vectơ sử dụng cbind
- 2. Tạo Chart mảng bảng dữ liệu Google từ hai mảng
- 3. Quá trình so sánh hai bộ dữ liệu
- 4. Tối đa hai bộ dữ liệu
- 5. Tách dữ liệu thành các bộ dữ liệu đào tạo/thử nghiệm trong MATLAB?
- 6. Tính góc hướng từ hai vectơ?
- 7. Tìm sự kết hợp của các từ trong hai vectơ
- 8. Trở dữ liệu từ các quá trình chia hai
- 9. Cách tạo danh sách các bộ dữ liệu C++
- 10. vẽ hai vectơ dữ liệu trên ô phân tán GGPLOT2 sử dụng R
- 11. Giao điểm của hai bộ (Danh sách) của dữ liệu
- 12. Tái tạo dữ liệu từ PCAP sniff
- 13. đồng bộ hóa hai cơ sở dữ liệu pg
- 14. Tạo vectơ trong MATLAB
- 15. Đồng bộ Javascript hai chiều Ràng buộc dữ liệu
- 16. Thêm hai bộ dữ liệu theo nguyên tố
- 17. nHibernate - Tạo các lớp từ cơ sở dữ liệu?
- 18. Tạo danh sách có tên từ hai vectơ (tên, giá trị)
- 19. Tạo hình ảnh từ dữ liệu RGB?
- 20. Thêm các phần tử từ hai Bộ
- 21. Bắt quaternion để xoay giữa hai vectơ
- 22. Cách tạo BufferedImage từ dữ liệu thô
- 23. Tạo bảng DB từ bảng dữ liệu
- 24. Tạo UIImage từ dữ liệu RGBA thô
- 25. Cách nhanh nhất để chuyển đổi từ vectơ của các cặp thành hai vectơ độc lập trong C++
- 26. "di chuyển" hai vectơ cùng
- 27. Các bộ lặp chung để truy cập các vectơ
- 28. Cấu trúc dữ liệu bộ nhớ ngoài để thay thế vectơ của bản đồ
- 29. Cấu trúc dữ liệu để lưu trữ hàng nghìn vectơ
- 30. Bộ dữ liệu để tạo dữ liệu ngẫu nhiên/thử nghiệm thực tế
Cấu trúc bạn xác định là một danh sách trong R Một danh sách là một vector chung, trong đó mỗi phần tử có thể là bất kỳ kiểu đối tượng R nào. Trong trường hợp này, bạn muốn danh sách trong đó mỗi phần tử là một vectơ có chiều dài hai, chứa một bộ tuple. –
Bạn cần phải làm rõ câu hỏi của bạn, vì 'c (A, B)' "hoạt động". I E. có chuyện gì vậy? –
@Joshua - một sự sụp đổ tiềm năng của phương pháp đó là không có gì có cấu trúc xác định con số nào là một phần của một bộ dữ liệu. –