我有一个标题,其中所有值都是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