如何在 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 中执行其他常见任务: