For some reason I am not able to remove a dataframe that is a subset of another dataframe. I've searched all around but this doesn't seem to be answered anywhere, which I find a bit strange. So if B is a dataframe that is a subset of A, how do I remove the entire B dataframe from the A dataframe. I've only been able to find methods to remove rows and specific columns but not the entire dataframe.
Use dplyr::anti_join()
anti_join()
return all rows from x where there are not matching values in y, keeping just columns from x.
If you need more specific help, please provide a proper REPRoducible EXample (reprex) illustrating your issue.
I'm trying to keep specific variables (not rows). So in the following code, I would like to keep colums 3 and 4 without explicitly stating 3 and 4 (since my data frame has 162 variables)
a <- rnorm(100)
b <- a + rnorm(100)
c <- as.data.frame(cbind(a, b, a+b, a*b))
d <- select(c, 1:2)
Your example is not reproducible since selec()
is not a base R function and you are not including a library call, but I'm going to assume it is dplyr::select()
, is this what you mean?
library(tidyverse)
a <- rnorm(100)
b <- a + rnorm(100)
c <- as.data.frame(cbind(a, b, a+b, a*b))
d <- select(c, 1:2)
c %>%
select(-!!names(d))
#> V3 V4
#> 1 -1.22719221 0.3038326119
#> 2 6.27336214 8.8600978655
#> 3 1.14139758 0.3207289136
#> 4 3.90941474 3.7669771055
#> 5 3.44082884 2.8970009313
#> 6 0.41465516 -0.0204190627
#> 7 -2.18893174 0.8990520292
#> 8 2.27302588 1.0264267635
#> 9 2.18476504 0.7976621752
#> 10 3.74638997 3.4453856493
#> 11 2.90404900 1.6512349461
#> 12 1.05221887 0.1692455658
#> 13 0.56270693 -0.1418796260
#> 14 2.57441469 1.5084953871
#> 15 -0.85615387 0.0271579586
#> 16 1.70309212 0.5832269683
#> 17 -3.44797640 2.9719017540
#> 18 1.25900774 -0.7329668850
#> 19 -2.03047760 0.9726788104
#> 20 -2.23749598 1.2493428181
#> 21 0.86056877 -0.4619442314
#> 22 -3.92508825 3.8427061193
#> 23 5.77211089 8.2343441978
#> 24 3.07272824 2.0575009128
#> 25 0.06734424 -0.0182042841
#> 26 -0.83018569 0.1678562931
#> 27 0.79063859 -0.0402782424
#> 28 -1.25002824 0.3901933817
#> 29 -3.13816881 2.0831057910
#> 30 -1.55094191 0.0208255482
#> 31 1.34175686 -0.0346549358
#> 32 -0.01371880 -0.0076808986
#> 33 -1.89513370 0.4538133426
#> 34 2.14380582 1.0655054648
#> 35 -1.18341889 0.3234954705
#> 36 1.74264059 0.2723482594
#> 37 -3.61016238 2.7034380228
#> 38 -2.20922493 0.4487558451
#> 39 -0.43378955 -0.4579949722
#> 40 -1.92335451 0.9244466708
#> 41 0.47544971 0.0563374307
#> 42 -1.54916967 0.3384945388
#> 43 2.81248815 1.5422222415
#> 44 -1.41903857 0.3196446755
#> 45 -4.03142986 3.9984766592
#> 46 1.55547943 0.5919991054
#> 47 0.08283129 -0.0002124066
#> 48 -3.38903046 2.8556441707
#> 49 -2.55541201 1.5257743728
#> 50 2.08610404 1.0861824856
#> 51 -0.93471920 -0.5684740111
#> 52 -6.36196303 9.4478098684
#> 53 -3.27248962 2.6207377951
#> 54 -3.78346481 2.7703264988
#> 55 1.62192239 0.6461546395
#> 56 2.73404862 1.5330648669
#> 57 -3.79402614 3.3506127226
#> 58 0.49375821 -0.6320113640
#> 59 2.48122970 1.4704522051
#> 60 -1.29597157 0.2998424328
#> 61 0.43939735 -0.1068534744
#> 62 1.83165200 0.8239987612
#> 63 -2.17269074 1.0487791223
#> 64 1.00079419 0.1660368503
#> 65 1.73821796 0.7479165015
#> 66 0.86510337 -0.3339242497
#> 67 1.49956988 0.3352637130
#> 68 3.02793316 1.8380806875
#> 69 -3.51916112 3.0102169787
#> 70 0.78228283 -0.4852991266
#> 71 -3.09803432 2.1855625649
#> 72 4.23062646 4.4745309303
#> 73 -1.19440002 0.0046243851
#> 74 2.94179340 2.0511677607
#> 75 -2.74728424 1.5630626996
#> 76 4.82232970 5.3984331036
#> 77 -0.64202463 -0.0583391509
#> 78 4.12512467 3.2993736684
#> 79 0.84132062 -0.0062360709
#> 80 4.52122161 4.3343093892
#> 81 1.11182126 0.2151528243
#> 82 -0.29473190 -0.3071640881
#> 83 1.01715587 0.1855131465
#> 84 1.29580775 0.2383775820
#> 85 2.99934744 1.9001294329
#> 86 2.77345327 1.0375963589
#> 87 3.65171396 2.2930470103
#> 88 -2.00942032 0.9910032929
#> 89 2.80135974 1.6749475388
#> 90 -2.31729027 1.3216570361
#> 91 -0.25625125 -0.0010730017
#> 92 -1.43239173 0.5076117428
#> 93 1.57992958 0.6188132044
#> 94 -3.19361089 2.5492154121
#> 95 -0.67838535 0.1149260648
#> 96 0.17274678 -0.0064137734
#> 97 -3.42481581 2.7201537417
#> 98 1.47530941 0.3446494186
#> 99 1.15610988 0.3229918500
#> 100 -2.25531022 1.1585870096
Created on 2020-01-06 by the reprex package (v0.3.0.9000)
Yes it was. Thanks for the response.
I've been using 'r -!!name()', I wonder why the function requires 2 !!
I was using -!names() and that didn't seem to work.
The rlang
operator for unquoting is !!
not !
(negation operator)
This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.