如果特定值满足 R 中的条件,则删除数据框中的列

Remove a column in dataframe if a particular value meets a condition in R

经过大量研究,我正在努力做在 R 中应该直截了当的事情。如果 particular[=28= 中的值,我试图只删除列(而不是行) ]行和特定列满足条件。例如我有一个数据框:

V1 <- c(1:2)
V2 <- c(2:3)
df1 <- data.frame(V1, V2)
V1 V2
1 2
2 3

如果 Row2/V2 小于 4,我想删除整个 V2 列。正如您在此示例中看到的,所讨论的值为 3。

在这种情况下,我将得到一个相当于:

的数据框
V1 <- c(1:2)
df1 <- data.frame(V1)
V1
1
2

请帮忙

您可能需要一个 if 子句。

df1 <- if (df1[nrow(df1), 2] < 4) {
  df1[, -2, drop=FALSE]
} else {
  df1
}
df1
#   V1
# 1  1
# 2  2

使用列名:

n <- 'V2'
df1 <- if (df1[nrow(df1), n] < 4) {
  df1[, setdiff(names(df1), n), drop=FALSE]
} else {
  df1
}
df1
#   V1
# 1  1
# 2  2

没有 if 子句,您可以:

df1[seq_along(df1)[ifelse(df1$V2[2] < 4, -2, -(length(df1) + 1))]]
#>   V1
#> 1  1
#> 2  2