如何在某个列中第一次出现 TRUE 之前对数据帧的头部进行切片?

How to slice the head of a dataframe until first time TRUE shows up in a certain column?

我想在 TRUE 第一次出现在特定列中后对数据帧的头部进行切片。

dataframe <- data.frame(C1 = c(4.32, 8.4, 6.43, 7.98, 5.68, 4.97), C2 = c(4.32, 9.87, 5.43, 6.54, 2.34, 6.59), Logical = c(FALSE, FALSE, TRUE, FALSE, TRUE, FALSE))

输出看起来像这样:

dataframe_new <- data.frame(C1 = c( 7.98, 5.68, 4.97), C2 = c(6.54, 2.34, 6.59), Logical = c(FALSE, TRUE, FALSE))

提前致谢!

如果有人也知道如何在列表中做到这一点,那就太好了...

这是一个基本的 R 方法:

  • which(dataframe$Logical == T)[1] returns Logical 列中第一次出现 TRUE 的行索引
  • (which(dataframe$Logical == T)[1] + 1) 因此在第一个 TRUE
  • 之后指定一行
  • (which(dataframe$Logical == T)[1] + 1):nrow(dataframe) 因此输出行从 TRUE 第一次出现后的一行开始到 dataframe 的行数,即 dataframe[ 的末尾=26=]
dataframe[(which(dataframe$Logical == T)[1] + 1):nrow(dataframe), ]

    C1   C2 Logical
1 7.98 6.54   FALSE
2 5.68 2.34    TRUE
3 4.97 6.59   FALSE