Tôi có các bảng dự phòng có kích thước khác nhau. Tôi muốn lập chỉ mục cho họ bằng cách sử dụng một tập hợp các giá trị từ tập dữ liệu. Tuy nhiên, myTable[c(5,5,5,5)]
rõ ràng không làm những gì tôi muốn. Làm cách nào để nhận được c(5,5,5,5)
để đọc là myTable[5,5,5,5]
?Lập chỉ mục bảng đa chiều sử dụng vector cột
6
A
Trả lời
3
Theo dõi trên câu trả lời của @ ttmaccer: điều này hoạt động vì đoạn (tối thiểu) mơ hồ trong số ?"["
có nội dung:
When indexing arrays by ‘[’ a single argument ‘i’ can be a
matrix with as many columns as there are dimensions of ‘x’;
the result is then a vector with elements corresponding to
the sets of indices in each row of ‘i’.
Hiệu quả của việc sử dụng t(ii)
trong
ii <- c(5,5,5,5)
a[t(ii)]
là để chuyển đổi ii
để một ma trận 1x4 rằng [
giải thích như một ma trận như mô tả ở trên; a[matrix(ii,nrow=1)]
sẽ rõ ràng hơn nhưng ít gọn hơn.
Những điều tốt đẹp về phương pháp này (bên cạnh tránh những khía cạnh huyền diệu-dường như của do.call
) là nó hoạt động song song trong hơn một bộ chỉ số, như trong
jj <- matrix(c(5,5,5,5,
6,6,6,6),byrow=TRUE,nrow=2)
a[jj]
## [1] 4445 5556
2
Nếu tôi đúng hiểu câu hỏi của bạn, cấu trúc này, sử dụng do.call()
, nên làm những gì bạn muốn:
## Create an example array and a variable containing the desired index
a <- array(1:1e4, dim = c(10, 10, 10, 10))
ii <- c(5, 5, 5, 5)
## Use do.call to extract the desired element.
do.call("[", c(list(a), ii))
# [1] 4445
Cuộc gọi trên hoạt động vì đây là tất cả tương đương:
a[5, 5, 5, 5]
`[`(a, 5, 5, 5, 5)
do.call("[", list(a, 5, 5, 5, 5))
do.call("[", c(list(a), ii))
Các vấn đề liên quan
- 1. đa chiều vector
- 2. đa chiều vector khởi tạo
- 3. Lập chỉ mục thanh lịch đến cuối vector/ma trận
- 4. Cột bảng, thiết lập cả chiều rộng tối thiểu và tối đa với css
- 5. Chuyển đổi tương tác lộn xộn giữa lập chỉ mục đa chiều và tuyến tính
- 6. Giảm thiểu chi phí lập chỉ mục vector
- 7. Lập chỉ mục một cột varchar
- 8. Lập chỉ mục cột biểu thức MATLAB
- 9. Lập chỉ mục một chiều numpy.array làm ma trận
- 10. SQLAlchemy - chiều dài cột tối đa
- 11. Chỉ mục cột được tính
- 12. Lập chỉ mục Postgres?
- 13. Sửa chữa/lập chỉ mục Bảng Lớn và myisam_sort_buffer_size
- 14. Tìm chỉ mục hàng bảng bằng cách sử dụng jQuery
- 15. vector n-chiều
- 16. Tôi có nên sử dụng cột chỉ mục trong nhiều bảng "liên kết" không?
- 17. Sử dụng mảng hai chiều (đa chiều) trong Erlang
- 18. Thực hành chiều rộng cột Bảng HTML
- 19. AMPL so với Python - Nhập bảng (từ điển đa chiều?)
- 20. CSS: Đặt chiều rộng tối đa trên một bảng
- 21. Tìm chỉ mục cột bằng cách sử dụng jQuery khi bảng chứa các ô mở rộng cột
- 22. Sử dụng giá trị của một cột làm chỉ mục trong kết quả sử dụng PDO
- 23. dự trữ() bộ nhớ đa chiều std :: vector (C++)
- 24. Có thể lập chỉ mục bảng chéo không?
- 25. gấu trúc - nhận được hầu hết giá trị gần đây của một cột cụ thể lập chỉ mục theo cột khác (nhận được giá trị tối đa của một cột cụ thể lập chỉ mục theo cột khác)
- 26. chiều dài tối đa của vachar cho chỉ mục với InnoDB và UTF-8
- 27. Trác thảo Python: Lập chỉ mục Boolean trên nhiều cột
- 28. Tạo chỉ mục bảng bằng cách sử dụng Fluent NHibernate
- 29. Xóa các phần tử trong stl :: vector bằng cách sử dụng các chỉ mục
- 30. Thiết lập văn bản Oracle để lập chỉ mục giá trị của nhiều cột trong bảng Oracle
Cảm ơn để mở rộng trên @ câu trả lời ttmacer của . Rất đẹp. –