如果列[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列。它并不特别需要是方差,任何方法都可以删除具有所有相同值的列来完成工作。
非常感谢!
答案 0 :(得分:3)
删除列,只需将对象重新分配给列:
colors <- colors[, -1]
colors
# [,1] [,2]
# red 2 3
# blue 5 4
# green 7 2
如果您要删除的列列表(技术上是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]