2012-02-10 24 views
7

tôi có một đối tượng ExpressionSet với 100 mẫu:tập hợp con của các mẫu cho một đối tượng ExpressionSet

> length(sampleNames(eset1)) 
100 

Tôi cũng có một vector của tên 75 mẫu (không phải là dữ liệu chính nó):

> length(vecOf75) 
75 

Làm cách nào để có thể đặt số eset1 (và lưu) theo 75 tên mẫu? Đó là, tôi muốn bỏ qua những mẫu đó trong eset1 có tên không được liệt kê trong vecOf75. Lưu ý rằng một số mẫu tương ứng với 75 tên mẫu có thể không nằm trong số eset1. Như vậy,

> length(sampleNames(eset1)) 

bây giờ sẽ cung cấp cho một cái gì đó < 75.

Trả lời

6

Một ExpressionSet có thể được tập hợp con giống như một ma trận, như vậy có lẽ

eset2 = eset1[, sampleNames(eset1) %in% vecOf75] 

hoặc nếu all(vecOf75 %in% sampleNames(eset1)) sau đó chỉ cần

eset1[, vecOf75] 

Không chắc gì 'tiết kiệm' có nghĩa; hoặc lưu (eset2, "some_file.rda") hoặc trích xuất các thành phần exprs(eset2), pData(eset2) v.v. và sử dụng write.table và các hàm R tiêu chuẩn khác.

+0

Bằng cách 'lưu', tôi muốn cập nhật 'eset1' với tập hợp con của nó thay vì tạo mới Đối tượng RData, chẳng hạn như 'eset2'. Cảm ơn. – user1202664

2

eset1 <- vecOf75[vecOf75 %in% eset1] này nói, lưu vào eset1 những vecOf75 nơi vecOf75 là trong eset1

Một ví dụ tầm thường sử dụng số:

eset1 <- sample(1:100) 
vecOf75 <- sample(1:200,75) 
eset1 <- vecOf75[vecOf75 %in% eset1] 

Hoặc, bạn có thể sử dụng subset() nhưng, việc sử dụng để đặt trước qua ']' sẽ hữu ích hơn nhiều theo lập trình.

+0

Điều đó sẽ không hoạt động với các đối tượng ExpressionSet (gói Bioconductor). – user1202664

+0

Nếu bạn nhìn vào đối tượng sâu hơn 'str (obj)', tôi chắc chắn bạn có thể tìm thấy nơi các tên ký tự được lưu trữ và điều chỉnh mã ở trên với một vài vecof75 [vecOf75 $ storage% trong% eset1 $ storage] hoặc một cái gì đó của bản chất đó. –

+0

Ngoài ra, 'vecOf75' chỉ chứa tên của các cột (hoặc mẫu cho một đối tượng ExpressionSet). Nó không chứa dữ liệu thực tế. – user1202664

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