4

我有广告数据框,我想删除名称几乎相同的列。示例 col, col1, col2 .... coln

我试过这样的事情:

 d$coln <- NULL

但它仅适用于最后一个 coln 列。

4

1 回答 1

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
于 2013-07-27T16:22:34.790 回答