我想从 R 的框架中排除“fldname”frm标记的列。如果我们知道该列的索引,i那么我们可以使用 来frm[-i]排除i第 3列。有没有简单的方法可以通过指定我想要排除的列标签字符串或标签字符串列表来执行相同的操作?
我找到了一个解决方案(由 Fhnuzoag 纠正):
frm[names (frm)[names (frm) != c("fldname1","fldname2")]]
frm[names (frm)[!names (frm) %in% c("fldname1","fldname2")]]
获取所需字符串的列表并将其用作索引。“fldname1”和“fldname2”上方是不需要的字段。
语言语法是否有一个简单的解决方案?
!是的,使用否定和的组合%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 ...
Run Code Online (Sandbox Code Playgroud)