I have a messy input file with lots of completely blank columns, and I'm trying to remove them like this (all the empty columns are un-named so R assigns V1, V2, etc.):
df1[,-grep("V\\d+", colnames(df1))]
However, the above line just returns the vector of all the empty columns (-1, -2, -3, -7, -10...), and doesn't actually remove each column the way df1[, -c(1, 2, 3, 7, 10) would.
Do I need to pass the vector differently?
Sample data (sanitized), was stored as data.table
converted for dput()
:
structure(list(V1 = c(NA, NA, NA, NA, NA), V2 = c(NA, NA, NA,
NA, NA), `Employee Name` = c("", "Bob", "", "Bob", "Bob"), V4 = c(NA,
NA, NA, NA, NA), V5 = c(NA, NA, NA, NA, NA), `Question 1` = c("",
"--", "", "Yes", ""), V7 = c(NA, NA, NA, NA, NA), V8 = c(NA,
NA, NA, NA, NA), `Question 2` = c("", "No", "", "Yes", ""), V10 = c(NA,
NA, NA, NA, NA), V11 = c(NA, NA, NA, NA, NA), `Question 3` = c("",
"--", "", "Yes", ""), V13 = c(NA, NA, NA, NA, NA), V14 = c(NA,
NA, NA, NA, NA), `Question 4` = c("", "--", "", "Yes", ""), V16 = c(NA,
NA, NA, NA, NA), V17 = c(NA, NA, NA, NA, NA), V18 = c(NA, NA,
NA, NA, NA), V19 = c(NA, NA, NA, NA, NA), V20 = c(NA, NA, NA,
NA, NA), `Question 5` = c("", "--", "", "Yes", ""), V22 = c(NA,
NA, NA, NA, NA), V23 = c(NA, NA, NA, NA, NA), V24 = c(NA, NA,
NA, NA, NA), V25 = c(NA, NA, NA, NA, NA), `Question 6` = c("",
"--", "", "Yes", ""), V27 = c(NA, NA, NA, NA, NA), V28 = c(NA,
NA, NA, NA, NA), V29 = c(NA, NA, NA, NA, NA), V30 = c(NA, NA,
NA, NA, NA), V31 = c(NA, NA, NA, NA, NA)), .Names = c("V1", "V2",
"Employee Name", "V4", "V5", "Question 1", "V7", "V8", "Question 2",
"V10", "V11", "Question 3", "V13", "V14", "Question 4", "V16",
"V17", "V18", "V19", "V20", "Question 5", "V22", "V23", "V24",
"V25", "Question 6", "V27", "V28", "V29", "V30", "V31"), row.names = c(NA,
5L), class = "data.frame")