📜  在 R 中查找向量中第一个非 NA 值的索引位置

📅  最后修改于: 2022-05-13 01:54:42.162000             🧑  作者: Mango

在 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

方法二: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