2012-02-13 42 views
6

Khi lặp qua một vec-tơ, có thể sử dụng chỉ mục của một phần tử cùng với phần tử không?R: Sử dụng thông tin vị trí của các phần tử khi lặp qua một vectơ.

a.vector < -c ("a", "b", "c", "a", "d")

Giả sử tôi cần những chỉ số của 'đầu tiên' "a" của a.vector. Người ta không thể sử dụng

mà (a.vector == "a")

Bởi vì có hai 'a' s và nó sẽ quay trở lại hai vị trí 1 và 4. Tôi cần chỉ số cụ thể của phần tử mà vòng lặp ngay lập tức bao trùm.

tôi cần nó cho một cái gì đó như thế này:

b.vector < -c ("the", "mèo", "đuổi", "a", "chuột")

for (i in a.vector) { 
    element<-b.vector[INDEX.OF(a.vector)]) 
-------some process using both 'element' and "a"-------} 

Điều này có vẻ tương tự như hàm 'liệt kê' trong python. Một giải pháp sẽ giúp ích rất nhiều. Cảm ơn.

Trả lời

12

Làm thế nào để chỉ lặp lại với số chỉ mục?

for (i in seq_along(a.vector)){ 
    a.element <- a.vector[i] 
    b.element <- b.vector[i] 
    ... 
} 
1

Sử dụng which.max thay vì which. Nó sẽ chọn vị trí của TRUE đầu tiên kể từ TRUE> FALSE.

which.max(a.vector=="a") 
#[1] 1 

Có thể @James đã hiểu yêu cầu của bạn tốt hơn I. Bạn thực sự đã hỏi một câu hỏi khác ở cuối văn bản so với yêu cầu trong dòng chủ đề để bạn có thể làm rõ. Tôi sẽ thêm rằng khái niệm truyền địa điểm của "i" trong một biểu mẫu ẩn cùng với giá trị của nó là khá nước ngoài để R. Mọi người thường hỏi liệu R là "vượt qua bởi giá trị" so với "vượt qua bằng cách tham khảo". Câu trả lời đúng là không ... rằng nó là "vượt qua bằng lời hứa". Tuy nhiên, đó là khái niệm gần gũi hơn với "vượt qua bởi giá trị" hơn nó sẽ là "vượt qua bằng cách tham khảo". for là một hàm và R tạo một bản sao của các đối số được truyền từ lời gọi hàm vào cơ thể của nó. Không có thông tin "vị trí" được mang theo trừ khi thông tin đó là những gì bạn làm trong thực tế đã yêu cầu thông tin đó vượt qua.

+0

Rất cảm ơn thông tin về 'vượt qua'. Trên thực tế, thông tin vị trí của nó mà tôi muốn sử dụng khi đi qua. Đúng là dòng tiêu đề và câu hỏi có chút không mạch lạc. Dòng chủ đề chỉ có ý nghĩa nếu kết nối của nó với vòng lặp. Nó giống như chỉ một ngón tay vào một phần tử của một vectơ, và hỏi nó là chỉ mục. Tôi đã sử dụng từ 'tái xuất hiện' theo nghĩa sai rằng nó có nghĩa là 'những lần xuất hiện trước hoặc sau vị trí của nguyên tố.' Đối với câu trả lời, TRUE đầu tiên cũng có thể đơn giản bằng cách sử dụng cái nào (...) [1]. Hy vọng phụ mới. dòng là tốt hơn. Cảm ơn rất nhiều. – jackson

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