2017-03-20 121 views
1

我有一個矩陣或具有特定列名稱的數據幀。使用包含一些列名稱的矢量,我可以輕鬆地處理矩陣的這些列。但有也解決對面列,未在載體中列出一個簡單的方法:如何選擇R中與列/行名稱相反的列/行?

mat <- matrix(c(1:12), ncol=4) 
colnames(mat) <- c("a", "b", "c", "d") 
not_target_col <- c("a", "b") 
在這種情況下,我喜歡有列 cd

。 我搜索這樣的事情,不使額外的步驟:

pos <- colnames(mat) != not_target_col 
mat[,pos] 

附加說明

我想更清楚:如果我有一個數字矢量,我可以得到相反的,當我添加*-1

not_target_col <- c(1,2) 
mat[,not_target_col * -1] 

當我使用邏輯向量時,還有一種像這樣的技術。在這裏,我只需要添加一個!

not_target_col <- c(T,T,F,F) 
mat[,!not_target_col] 
+0

@akrun definitly,我現在怎麼辦? –

+0

你無能爲力。有人會對它進行標記 – akrun

+0

我在下面添加了另一個解決方案 – akrun

回答

0

我們可以用列名之間setdiffcolnames)和not_target_col得到不與not_target_col匹配的列名。

setdiff(colnames(mat), not_target_col) 
#[1] "c" "d" 

如果我們需要從矩陣選擇那些列

mat[, setdiff(colnames(mat), not_target_col)] 

#  c d 
#[1,] 7 10 
#[2,] 8 11 
#[3,] 9 12 
0

另一種選擇是%in%

mat[, !colnames(mat) %in% not_target_col] 
#  c d 
#[1,] 7 10 
#[2,] 8 11 
#[3,] 9 12