删除R中的不变列

删除R中的不变列,r,R,如果列对[2:nrow(df),]是不变的,我想删除该列。] 就是不能让它工作。对于R和编程来说仍然是新的 red <- c(1, 2, 3) blue <- c(4, 5, 4) green <- c(4, 7, 2) colors <- data.frame(red, blue, green) colors <- t(colors) colors [,1] [,2] [,3] red 1 2 3 blue

如果列对
[2:nrow(df),]是不变的,我想删除该列。]

就是不能让它工作。对于R和编程来说仍然是新的

red    <- c(1, 2, 3)
blue   <- c(4, 5, 4)
green  <- c(4, 7, 2)
colors <- data.frame(red, blue, green)
colors <- t(colors)
colors

      [,1] [,2] [,3]
red      1    2    3
blue     4    5    4
green    4    7    2

red要删除列,只需将对象重新分配给列:

colors <- colors[, -1]
colors

#       [,1] [,2]
# red      2    3
# blue     5    4
# green    7    2
或者,如果您知道要保留的内容:

toKeep <- c( <whichever columns to keep> )
colors <- colors[, toKeep]

我怀疑头名称是导致代码失败的原因。除非您正在执行除Described之外的操作,否则您的代码将返回TRUE-FALSE并使用[,-todrop]给出预期结果。我的示例是toDrop[2]=头FALSE。当我执行df[,-toDrop]时,它返回一个包含0列的数据帧。所以它没有失败,但是它没有按预期的那样工作。你是对的。导致它失败的不是标题,而是某些东西。
toKeep <- c( <whichever columns to keep> )
colors <- colors[, toKeep]
toDrop <- apply(colors[2:nrow(colors), ], 2, function(x) all(duplicated(x)[-1] ))

# Optionally:
toDrop <- which(toDrop)
if (length(toDrop))
   colors <- colors[, -toDrop]