我想从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”是不需要的字段。
语言语法有简单的解决方案吗?
答案 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)]
。