2010-03-03 29 views
37

Giả sử tôi có một danh sách hoặc khung dữ liệu trong R và tôi muốn lấy chỉ mục hàng, làm cách nào để thực hiện điều đó? Đó là, tôi muốn biết có bao nhiêu hàng một ma trận nhất định bao gồm.Cách lấy số chỉ mục hàng trong R?

+1

Câu hỏi vẫn còn rất khó hiểu. – reinierpost

+1

Tôi nghĩ rằng đó là bởi vì nó là hai câu hỏi: câu thứ hai là những gì @BenBolker trả lời 'nrow (x)' (tức là cho * kích thước * của khung dữ liệu). Câu đầu tiên là về việc nhận số hàng, mà Shane đã trả lời (và không cải thiện) 'as.integer (rownames (x))' –

Trả lời

10

Nó không hoàn toàn rõ ràng chính xác những gì bạn đang cố gắng làm.

Để tham khảo một hàng trong một khung dữ liệu sử dụng df[row,]

Để có được vị trí đầu tiên trong một vector của một cái gì đó sử dụng match(item,vector), nơi mà các vector có thể là một trong các cột của khung dữ liệu của bạn, ví dụ như df$cname nếu cột tên là cname.

Edit:

Để kết hợp các bạn sẽ viết:

df[match(item,df$cname),]

Lưu ý rằng trận đấu mang đến cho bạn mục đầu tiên trong danh sách, vì vậy nếu bạn không tìm kiếm một số tài liệu tham khảo độc đáo , bạn có thể muốn cân nhắc điều gì đó khác.

+1

Đây là một câu trả lời hay cho một câu hỏi khác so với tôi tin rằng cái tôi thay đổi của @ lebesgue đang hỏi. Nếu bạn gõ 'head (df)' có tiêu đề trên tất cả các cột ngoại trừ ID hàng. Vì vậy, tôi nghĩ @lebesgue đang tìm kiếm một chức năng cho phép truy cập vào ID hàng (chức năng 'hàng'). – isomorphismes

56

Tôi giải thích câu hỏi của bạn về việc nhận số hàng.

  • Bạn có thể thử as.numeric(rownames(df)) nếu bạn chưa đặt lại tên. Nếu không, hãy sử dụng một chuỗi gồm 1:nrow(df).
  • Chức năng which() chuyển đổi chỉ mục hàng TRUE/FALSE thành số hàng.
+3

Đây là những gì tôi làm, kể từ khi tên hàng DF, ngay cả khi chúng là số, không nhất thiết phải tương ứng với chỉ mục hàng: 'hàng (ô tô [34:50,]) [, 1]; as.integer (tên gọi (xe hơi [34:50,])) '. Tại sao bạn sử dụng 'as.numeric()' ở đây? Nó sẽ không có ý nghĩa hơn khi sử dụng 'as.integer()'? – naught101

2

Nếu tôi hiểu câu hỏi của bạn, bạn chỉ muốn để có thể truy cập vào các mục trong một khung dữ liệu (hoặc danh sách) bởi hàng:

x = matrix(ceiling(9*runif(20)), nrow=5 ) 
colnames(x) = c("col1", "col2", "col3", "col4") 
df = data.frame(x)  # create a small data frame 

df[1,]     # get the first row 
df[3,]     # get the third row 
df[nrow(df),]   # get the last row 

lf = as.list(df)   

lf[[1]]     # get first row 
lf[[3]]     # get third row 

, vv

8

Xem row trong ?base::row. Điều này cho phép các chỉ số hàng cho bất kỳ đối tượng giống ma trận nào.

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