Tôi đang tự hỏi về những nhiệm vụ đơn giản của việc tách một vector thành hai tại một chỉ số nhất định:R chia vector và chữ số ở vị trí
splitAt <- function(x, pos){
list(x[1:pos-1], x[pos:length(x)])
}
a <- c(1, 2, 2, 3)
> splitAt(a, 4)
[[1]]
[1] 1 2 2
[[2]]
[1] 3
Câu hỏi của tôi: Phải có một số chức năng hiện có cho điều này, nhưng tôi có thể' Tôi tìm thấy nó? Có phải là split
một khả năng? Việc triển khai ngây thơ của tôi cũng không hoạt động nếu pos=0
hoặc pos>length(a)
.
Cảm ơn, công trình này tốt cho tôi! Tôi vẫn ngạc nhiên rằng không có chức năng 'splitAt' được thực hiện trong cơ sở R ... – user1981275
Chức năng này rất chậm với' x' rất lớn, có lẽ do 'seq_along (x)' tạo ra một vectơ rất dài và sau đó '% in%' phải khớp với vectơ rất dài này. – Calimo
@Calimo: không, nếu bạn cấu hình nó, bạn sẽ thấy rằng hầu hết thời gian được dùng bên trong 'split' chậm chạp. Bạn chắc chắn có thể tránh nó nhưng bạn sẽ mất rất nhiều về khả năng đọc và mã nhỏ gọn. – flodel