如何在 r 中处理 nan 值(附示例)


在 R 中, NaN代表非数字。

通常,当您尝试执行导致无效结果的计算时,会出现 NaN 值。

例如,除以零或计算负数的对数都会产生 NaN 值:

 #attempt to divide by zero
0 / 0

[1]NaN

#attempt to calculate log of negative value
log(-12)

[1]NaN

请注意,NaN 值与NA值不同,NA 值仅表示缺失值。

您可以使用以下方法来处理R中的NaN值:

 #identify positions in vector with NaN values
which(is. nan (x))

#count total NaN values in vector
sum(is. nan (x)) 

#remove NaN values in vector
x_new <- x[!is. no (x)]

#replace NaN values in vector
x[is. nan (x)] <- 0 

以下示例展示了如何在实践中使用每种方法。

示例 1:使用 NaN 值识别向量中的位置

以下代码显示如何识别向量中包含 NaN 值的位置:

 #create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)

#identify positions with NaN values
which(is. nan (x))

[1] 2 4

从结果中我们可以看到向量中位置2位置4的元素都是NaN值。

示例 2:计算向量中的 NaN 值总数

下面的代码展示了如何计算R中向量中NaN值的总数:

 #create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)

#identify positions with NaN values
sum(is. nan (x))

[1] 2

从结果我们可以看到向量中总共有2个NaN值。

示例3:删除向量中的NaN值

下面的代码展示了如何创建一个新的向量,并从原始向量中删除 NaN 值:

 #create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)

#define new vector with NaN values removed
x_new <- x[!is. no (x)]

#view new vector
x_new

[1] 1 12 50 30

请注意,两个 NaN 值已从向量中删除。

示例4:替换向量中的NaN值

以下代码展示了如何用零替换向量中的 NaN 值:

 #create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)

#replace NaN values with zero
x[is. nan (x)] <- 0

#view updated vector
x

[1] 1 0 12 0 50 30

请注意,向量中的两个 NaN 值均已替换为零。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在R中插入缺失值
如何在R中查找和计算缺失值
如何在 R 中使用“Is Not NA”

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注