删除具有几乎特定名称的列

时间:2013-07-27 16:18:24

标签: r

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

我试过这样的事情:

 d$coln <- NULL

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

1 个答案:

答案 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