在 R 中查找向量中第一个非 NA 值的索引位置
原子向量包含属于相同数据类型的元素。它也可能包含缺失值或 NA 值,位于此向量范围内的任何索引处。可以使用标准索引方法在 R 中访问这些 NA 值。在本文中,我们将看到如何在 R 编程语言中找到向量中第一个非 NA 值的索引位置。
方法一:使用 is.na() 和which()方法
否定 is.na() 方法首先应用于原子向量,它返回一个相同长度的布尔向量,其中 TRUE 表示该值是非 na 值,FALSE 表示缺失值或 NA 值。接下来是应用 which() 方法,该方法返回非 na 值的索引。然后应用聚合函数min() 从所有索引中获取第一个或最小元素。
代码:
R
# declaring a vector
vec <- c(NA, NA, 2, NA, 5, 7)
print ("Original Vector")
print (vec)
# getting indexes of all the non na elements
non_na_vec <- which(!is.na(vec))
# determining the minimum from these indices
first_non_na <- min(non_na_vec)
print ("First non-na index")
print (first_non_na)
R
# declaring a vector
vec <- c(NA, 1, 3, NA, 2, NA, 5, 7)
print ("Original Vector")
print (vec)
# getting indexes of all the non na elements
non_na_vec <- which.max(!is.na(vec))
print ("First non-na index")
print (non_na_vec)
输出:
[1] "Original Vector"
[1] NA NA 2 NA 5 7
[1] "First non-na index"
[1] 3
如果向量不包含任何非缺失值,则此方法将引发异常并返回 Inf
Warning message:
In min(non_na_vec) : no non-missing arguments to min; returning Inf
方法二:which.max()方法
which.max() 方法返回在具有非 na 值的向量中遇到的第一个参数。该方法在 R 中具有以下语法:
which.max(vec)
代码:
电阻
# declaring a vector
vec <- c(NA, 1, 3, NA, 2, NA, 5, 7)
print ("Original Vector")
print (vec)
# getting indexes of all the non na elements
non_na_vec <- which.max(!is.na(vec))
print ("First non-na index")
print (non_na_vec)
输出:
[1] "Original Vector"
[1] NA 1 3 NA 2 NA 5 7
[1] "First non-na index"
[1] 2