Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在R中的另一个列表中找到id,则删除数据帧的行_R - Fatal编程技术网

如果在R中的另一个列表中找到id,则删除数据帧的行

如果在R中的另一个列表中找到id,则删除数据帧的行,r,R,我有一个数据框final,其中每个观察值在名为final$workerId 如果在另一个名为omit 这是我试过的 final <- read.csv("the data.csv") omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7") final <- final[,-final$workerId %in% omit] final%in%返回一个逻辑向量。逻辑向量的反面可

我有一个数据框
final
,其中每个观察值在名为
final$workerId
如果在另一个名为
omit
这是我试过的

final <- read.csv("the data.csv")
omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7")
final <- final[,-final$workerId %in% omit]

final
%in%
返回一个逻辑向量。逻辑向量的反面可以通过
找到
,而不是
-
,因此
final[!final$workerId%在%omit中,]
是您想要的

您还可以使用
which
将逻辑转换为整数索引向量,然后可以像这样使用
-
final[-which(final$workerId%在%省略中),]
,但第一种方法似乎更简单

例如:

mtcars[!mtcars$cyl %in% c(4, 6), ]
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8

这里有一个dplyr解决方案,可能会引起人们的兴趣。语法的逻辑类似于您在问题中编写的基本R尝试

omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7")
final <- filter(final, !(workerId %in% omit))

在%
中忽略
%返回一个逻辑向量。逻辑向量的反面可以通过
找到
,而不是
-
,因此
final[,!final$workerId%在%omit中]
是您想要的。您还可以使用
将逻辑转换为整数索引向量,然后您可以这样使用
-
final[,-which(final$workerId%in%omit)]
,但第一种方法似乎更简单。第一种解决方案似乎不起作用,但
哪种解决方案效果很好。非常感谢。像这样
final@Parfait括号是不需要的——这是我从问题中复制的一个拼写错误,在这个问题中,用户试图对列而不是行进行子集划分。将逗号移到逻辑语句之后,它就会正常工作,例如,
mtcars[!mtcars$cyl%在%c(4,6)中]
。注意,在我的
版本中,逗号也应该被移动。哈哈哇。回顾我第一次开始使用R时的老问题:这绝对是我现在使用的最好的答案。