在R框架中按字符串标签选择特定列

时间:2012-05-25 07:42:58

标签: r dataframe

我想从R中的框架frm中排除“fldname”标记的列。如果我们知道列的索引说i,那么我们可以使用frm[-i]要排除i th 列。有没有简单的方法可以通过指定列标签字符串或我要排除的标签字符串列表来做同样的事情?

我制定了一个解决方案(由Fhnuzoag纠正):

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

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

获取有用字符串列表并将其用作索引。上面“fldname1”“fldname2”是不需要的字段。

语言语法有简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

是的,使用否定!%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 :(得分:1)

我想,不。通常我会frm[, setdiff(names(frm), excludelist)]