2015-09-10 15 views
10
> dput(test) 
structure(list(MEMORY1 = c(7.5, 6, 6, 3.5, 5, 5), MEMORY2 = c(5, 
7.5, 3, 3.5, 5, 5), MEMORY3 = c(5, 3.5, 3, 3.5, 5, 2), MEMORY4 = c(2, 
1.5, 3, 3.5, 1, 2), MEMORY5 = c(7.5, 3.5, 3, 3.5, 5, 7), MEMORY6 = c(2, 
5, 7.5, 7.5, 5, 5), MEMORY7 = c(2, 1.5, 3, 3.5, 5, 2), MEMORY8 = c(5, 
7.5, 7.5, 7.5, 5, 8)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3", 
"MEMORY4", "MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(NA, 
6L), class = "data.frame") 
> test 
    MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8 
1  7.5  5.0  5.0  2.0  7.5  2.0  2.0  5.0 
2  6.0  7.5  3.5  1.5  3.5  5.0  1.5  7.5 
3  6.0  3.0  3.0  3.0  3.0  7.5  3.0  7.5 
4  3.5  3.5  3.5  3.5  3.5  7.5  3.5  7.5 
5  5.0  5.0  5.0  1.0  5.0  5.0  5.0  5.0 
6  5.0  5.0  2.0  2.0  7.0  5.0  2.0  8.0 

Tôi có một data.frame và tôi chỉ muốn đặt hàng đầu tiên. Nếu tôi làm test[1, ], kết quả làR: đặt dữ liệu.không có tên cột

> test[1, ] 
    MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8 
1  7.5  5  5  2  7.5  2  2  5 

Làm thế nào để tập hợp con các data.frame vì vậy mà tôi nhận được chỉ là một vector của các con số mà không cần các tên cột?

Trả lời

8

gì bạn muốn là một vector số thay vì một data.frame. Đối với điều này, bạn chỉ có thể sử dụng as.numeric để thực hiện chuyển đổi

> as.numeric(df[1,]) 
[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0 
6

Bạn có thể sử dụng unlist với tùy chọn use.names=FALSE để chỉ trả lại vector không có tên.

unlist(test[1,], use.names=FALSE) 
#[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0 

test[1,] vẫn là data.frame với 8 cột. A data.frame có thể được coi là list có cùng số length cho các phần tử list (hoặc cột) của nó. Vì vậy, chúng tôi có thể sử dụng unlist. Điều này cũng hoạt động khi bạn đang tạo một vector từ nhiều hàng.

unlist(test[1:2,], use.names=FALSE) 

Hoặc như @Frank đề nghị, nếu chúng ta Subsetting nhiều hàng bằng cách giữ kích thước, chúng tôi đặt tên cho NULL và chuyển đổi sang matrix.

as.matrix(setNames(test[1:2,],NULL)) 
+1

Về phần thứ hai, tôi nghĩ rằng đó không thực sự là "subsetting" (từ tiêu đề OP), vì kích thước thay đổi. Có thể 'as.matrix (setNames (test [1: 2,], NULL))' hoặc goofier '\' dimnames <- \ '(as.matrix (test [1: 2,]), NULL)' – Frank

+0

@ Frank Cảm ơn. nó có ý nghĩa. – akrun

+2

Một thay thế cho 'setNames' cho phiên bản' as.matrix' là hàm tiện ích 'unname' – user295691

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