2011-08-10 69 views
-3

我有充分的矩陣列表以及每個矩陣的樣子,過濾矩陣

 P V E T R L K A - 
    P 17 0 1 0 0 0 0 0 0 
    S 3 0 2 0 1 1 1 0 0 
    O 2 0 0 1 0 0 0 0 1 
    V 0 2 0 0 0 0 0 1 0 
    M 0 3 0 0 0 0 0 0 0 
    L 3 0 0 0 0 0 0 0 0 
    C 1 0 0 0 0 0 0 0 0 

某些條件過濾後,我留下的2×2矩陣的列表,其中每一個看起來像:

P E 
P 17 1 
S 3 2 

從整個矩陣,我只需要選擇2 * 2矩陣中的列。 我將如何選擇它?

+1

如果你默默地downvoted這個問題,請延長向OP提供的問題是說問題是什麼以及如何解決問題。 – Andrie

+0

這對我而言並不明顯,你正在努力做什麼。你可以請擴展嗎?在這個例子中,你是否希望從整個矩陣中提取列P和E? – Andrie

+1

除了澄清你的問題,你應該使其可重現,按照這裏的指導http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example。你過去的問題表現出一種非重複性的模式,如果你學會發布更好的問題,你會得到更好的答案:-) –

回答

1

這個問題並不完全清楚,但在我看來,您正試圖從您的完整矩陣中提取某些列。要提取的列是小矩陣中的列,因此在這種情況下,請提取列PE

以下是如何操作。首先,使用colnames來查找小矩陣中列的名稱。

colnames(sub) 
[1] "P" "E" 

然後使用數組子集,從全矩陣提取這些列:

full[, colnames(sub)] 
    P E 
P 17 1 
S 3 2 
O 2 0 
V 0 0 
M 0 0 
L 3 0 
C 1 0 

您的數據是:

full <- structure(c(17L, 3L, 2L, 0L, 0L, 3L, 1L, 0L, 0L, 0L, 2L, 3L, 
0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L), .Dim = c(7L, 9L), .Dimnames = list(c("P", "S", "O", 
"V", "M", "L", "C"), c("P", "V", "E", "T", "R", "L", "K", "A", 
"X."))) 

sub <- structure(c(17L, 3L, 1L, 2L), .Dim = c(2L, 2L), .Dimnames = list(
    c("P", "S"), c("P", "E"))) 
+0

非常感謝你,我會道歉每個人不正確地構建我的問題,並會確保我的進一步的問題將是可重現的。 – Ram