我有一个d数据框,我想删除名称几乎相同的列。示例col,col1,col2 .... coln
我试过这样的事情:
d$coln <- NULL
但它仅适用于最后一个coln列。
答案 0 :(得分:6)
使用grep
标识列,使用list(NULL)
删除列。
一些示例数据:
set.seed(1)
mydf <- data.frame(id_1 = 1:6, id_2 = c("A", "B"), varA.1 = sample(letters, 6),
varA.2 = sample(letters, 6), varA.3 = sample(letters, 6),
varB.2 = sample(10, 6), varB.3 = sample(10, 6),
varC.3 = rnorm(6))
mydf
# id_1 id_2 varA.1 varA.2 varA.3 varB.2 varB.3 varC.3
# 1 1 A g y r 4 3 -0.04493361
# 2 2 B j q j 7 4 -0.01619026
# 3 3 A n p s 8 1 0.94383621
# 4 4 B u b l 2 10 0.82122120
# 5 5 A e e p 10 6 0.59390132
# 6 6 B s d u 1 2 0.91897737
让我们删除其中包含“varA”的所有列。
mydf[grep("varA", names(mydf))]
mydf[grep("varA", names(mydf))] <- list(NULL)
mydf
# id_1 id_2 varB.2 varB.3 varC.3
# 1 1 A 4 3 -0.04493361
# 2 2 B 7 4 -0.01619026
# 3 3 A 8 1 0.94383621
# 4 4 B 2 10 0.82122120
# 5 5 A 10 6 0.59390132
# 6 6 B 1 2 0.91897737