从 is.nan 返回不正确的逻辑
Returning incorrect logical from is.nan
我正在分析来自公开数据库的微阵列数据,我的输出是一个将实验数据与对照数据进行比较的对数比矩阵。我发现我的其中一列填充了 NaN
值,因为这种处理没有相应的控制。我的数据框 (fc_initial
) 尺寸为 9049 x 647。
> dim(fc_initial)
[1] 9049 647
由 NaN 填充的列是第 580 列
head(fc_initial[,580])
# [1] NaN NaN NaN NaN NaN NaN
summary(is.nan(fc_initial[,580]))
# Mode TRUE NA's
# logical 9049 0
当我尝试使用 apply
检查所有列时,R 不正确地 returns 此列的所有 FALSE
。
fc_num <- apply(fc_initial, 2, is.nan)
summary(fc_num[ ,580])
# Mode FALSE NA's
# logical 9049 0
我已经使用 fc_initial
和 fc_num
的视图在视觉上确认了这一点,并且我已经使用 which()
.[=26= 仔细检查我正在寻找正确的列]
which(fc_num, arr.ind = TRUE)
# row col
which
returns 没有单元格显示为 TRUE
。
我错过了什么?为什么 R 返回一列 FALSE
用于我目视确认为 TRUE
的一列值?
调用apply
时,数据帧被强制转换为矩阵。如果有任何字符列,整个数据帧被强制转换为字符矩阵,所有 NaN
都转换为 NA
df_1 <- data.frame(a=c("a","b","c"), b=c(NaN, NaN,NaN))
df_2 <- data.frame(a=c(1,2,3), b=c(NaN, NaN,NaN))
as.matrix(df_1)
a b
[1,] "a" NA
[2,] "b" NA
[3,] "c" NA
as.matrix(df_2)
a b
[1,] 1 NaN
[2,] 2 NaN
[3,] 3 NaN
即兴创作@cactusWoman 和@joran 评论:
## this gives count of nan's by column for your data.frame
sapply(fc_initial, function(y) sum(length(which(is.nan(y)))))
我正在分析来自公开数据库的微阵列数据,我的输出是一个将实验数据与对照数据进行比较的对数比矩阵。我发现我的其中一列填充了 NaN
值,因为这种处理没有相应的控制。我的数据框 (fc_initial
) 尺寸为 9049 x 647。
> dim(fc_initial)
[1] 9049 647
由 NaN 填充的列是第 580 列
head(fc_initial[,580])
# [1] NaN NaN NaN NaN NaN NaN
summary(is.nan(fc_initial[,580]))
# Mode TRUE NA's
# logical 9049 0
当我尝试使用 apply
检查所有列时,R 不正确地 returns 此列的所有 FALSE
。
fc_num <- apply(fc_initial, 2, is.nan)
summary(fc_num[ ,580])
# Mode FALSE NA's
# logical 9049 0
我已经使用 fc_initial
和 fc_num
的视图在视觉上确认了这一点,并且我已经使用 which()
.[=26= 仔细检查我正在寻找正确的列]
which(fc_num, arr.ind = TRUE)
# row col
which
returns 没有单元格显示为 TRUE
。
我错过了什么?为什么 R 返回一列 FALSE
用于我目视确认为 TRUE
的一列值?
调用apply
时,数据帧被强制转换为矩阵。如果有任何字符列,整个数据帧被强制转换为字符矩阵,所有 NaN
都转换为 NA
df_1 <- data.frame(a=c("a","b","c"), b=c(NaN, NaN,NaN))
df_2 <- data.frame(a=c(1,2,3), b=c(NaN, NaN,NaN))
as.matrix(df_1)
a b
[1,] "a" NA
[2,] "b" NA
[3,] "c" NA
as.matrix(df_2)
a b
[1,] 1 NaN
[2,] 2 NaN
[3,] 3 NaN
即兴创作@cactusWoman 和@joran 评论:
## this gives count of nan's by column for your data.frame
sapply(fc_initial, function(y) sum(length(which(is.nan(y)))))