2012-05-25 19 views
1

我要排除的「fldname」標記從幀frm在R列。如果我們知道列的索引說i那麼我們就可以用frm[-i]排除ith欄。有沒有簡單的方法來通過指定我想排除的列標籤字符串或標籤字符串列表來做同樣的事情?在R幀,選擇通過串標特定列

我研究出瞭解決辦法(由Fhnuzoag校正):

frm[names (frm)[names (frm) != c("fldname1","fldname2")]]

frm[names (frm)[!names (frm) %in% c("fldname1","fldname2")]]

得到想要的字符串列表,並把它們作爲指標。以上「fldname1」「fldname2」是不需要的字段。

語言語法有簡單的解決方案嗎?

+1

'!='並不是真的那樣... – Fhnuzoag

+0

是的,現在才注意到.. – phoxis

回答

3

是的,使用否定!%in%的組合。例如,使用iris

x <- iris[, !names(iris) %in% c("Sepal.Width", "Sepal.Length")] 
str(x) 
'data.frame': 150 obs. of 3 variables: 
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... 
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... 
$ Species  : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... 
1

我想,沒有。通常我做frm[, setdiff(names(frm), excludelist)]