3

如果列不变,我想删除它[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

由于蓝色和绿色的不变性,如何从逻辑上删除第 1 列。不需要特别改变任何删除具有所有相同值的列的方法都可以完成这项工作。

非常感谢!

4

1 回答 1

3

要删除一列,只需重新分配对象减去该列:

colors <- colors[, -1]
colors

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

如果您有要删除的列列表(技术上是 a vector,而不是 R list),请使用:

toDrop <- c( <whichever columns to drop> )
colors <- colors[, -toDrop]

或者,如果您知道要保留哪个:

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

至于确定它是否不变,请使用duplicated,但不是直接在 data.frame 上,而是在每一列上(使用函数apply):

toDrop <- apply(colors[2:nrow(colors), ], 2, function(x) all(duplicated(x)[-1] ))

# Optionally:
toDrop <- which(toDrop)
if (length(toDrop))
   colors <- colors[, -toDrop]
于 2013-10-02T14:06:28.820 回答