r语言 - 替换列中最后一个0元素并替换它



我有一个标题,其中所有值都是0,1或-1。我需要找到每列中最后一个0元素并用2替换它。我尽量不要在这里使用循环…

帮助!

您可以创建一个函数来执行替换并应用它

library(tidyverse)
set.seed(1234)
df <- tibble(x = sample(-1:1, 4, replace = TRUE),
y = sample(-1:1, 4, replace = TRUE),
z = sample(-1:1, 4, replace = TRUE))
replace_last_0 <- function(x) {
x[tail(which(x == 0), 1)] <- 2
x
}
# all at once
mutate(df, across(everything(), replace_last_0))
# or one by one
mutate(df, x = replace_last_0(x), 
y = replace_last_0(y), 
z = replace_last_0(z))

首先我们可以创建一个简单的标题:

foo <- data.frame(x = 1:10, y = sample(c(-1,0,1), 10, replace = T)) |>
tibble::as.tibble()

您可以使用which来识别向量中满足条件的元素,然后替换它们。

dat$y[max(which(dat$y == 0))] <- 2

最新更新