3

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

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

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

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

获取想要的字符串列表并将它们用作索引。“ fldname1 “fldname2”上方是不需要的字段。

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

4

2 回答 2

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 ...
于 2012-05-25T08:06:17.303 回答
1

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

于 2012-05-25T08:07:13.637 回答