R - 如何在向量中的特定元素周围创建 ascending/descending 数字线
R - How to create an ascending/descending number line around a specific element in a vector
我有以下一系列向量,每个向量都有一个唯一的位置“0”,周围是 NA:
NA NA NA NA NA 0 NA NA NA NA NA NA NA NA NA NA NA
有没有办法为每个向量生成以下内容,即以 0 位置为中心的数字线,用于每个向量的长度?:
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
非常感谢您的指导。
您可以使用:
x <- c(NA, NA, NA, NA, NA, 0 ,NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
seq_along(x) - which(x == 0)
#[1] -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
另一个解决方案
seq(- which(x == 0) + 1, length.out = length(x))
另一种选择
seq(length(x)) - which(!x)
或 which.max
seq_along(x) - which.max(x)
我有以下一系列向量,每个向量都有一个唯一的位置“0”,周围是 NA:
NA NA NA NA NA 0 NA NA NA NA NA NA NA NA NA NA NA
有没有办法为每个向量生成以下内容,即以 0 位置为中心的数字线,用于每个向量的长度?:
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
非常感谢您的指导。
您可以使用:
x <- c(NA, NA, NA, NA, NA, 0 ,NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
seq_along(x) - which(x == 0)
#[1] -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
另一个解决方案
seq(- which(x == 0) + 1, length.out = length(x))
另一种选择
seq(length(x)) - which(!x)
或 which.max
seq_along(x) - which.max(x)