R语言 查找矢量中第一个非NA值的索引位置
一个原子向量包含属于同一数据类型的元素。它也可能包含缺失或不确定的值,在这个向量的范围内的任何索引。这些NA值可以在R中使用标准的索引方法进行访问。在这篇文章中,我们将看到如何在R编程语言中找到向量中第一个非NA值的索引位置。
方法1:使用is.na()和 which() 方法
首先在原子向量上应用否定的is.na()方法,返回一个相同长度的布尔向量,其中TRUE表示该值为非NA,FALSE表示缺少或NA值。接下来是应用which()方法,返回非NA值的索引。然后应用聚合函数min()来获得所有索引中的第一个或最小的元素。
代码
# 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)
输出
[1] "Original Vector"
[1] NA NA 2 NA 5 7
[1] "First non-na index"
[1] 3
如果向量不包含任何非缺失的值,那么这种方法会抛出一个异常并返回Inf
警告信息。
在min(non_na_vec)中:没有非缺失参数给min;返回Inf
方法2: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