总结使用 na.rm = TRUE 时返回 -inf
summarise returning -inf when using na.rm = TRUE
我最近构建了一个简单的 R 脚本来总结三个不同的数据框。自从更新到最新版本的 R 和 R Studio 后,我 运行 在 dplyr 中仅对一个数据帧使用 summarize 函数(其他两个都很好)时,我进入了一个我以前从未见过的输出.我还收到了一系列我不熟悉的警告。请注意,在更新之前,我 运行 脚本与编写的完全一致,任何数据帧都没有问题。
有问题的数据帧称为VO2,其设置如下:
Name Sex VO2
AthleteA M 50
AthleteA M 52
AthleteA M NA
AthleteB M 49
AthleteB M 56
AthleteB M 47
AthleteC M 42
AthleteC M NA
AthleteC M 41
AthleteD M NA
AthleteD M NA
AthleteD M NA
我运行的代码是:
Test.Summary.VO2 = VO2 %>% group_by(Name, Sex) %>%
summarise(Best.Score = max(VO2, na.rm=TRUE))
此代码生成以下摘要:
Name Sex Best.Score
AthleteA M 52
AthleteB M 56
AthleteC M 42
AthleteD M -Inf
-Inf 值在输出中是全新的。我不明白为什么它现在出现在只有 NA 的情况下。
如上所述,我对第二个数据框有完全相同的布局,运行 具有相同类型的摘要。这里一切正常。当我用 na.rm=TRUE 进行总结时,它会删除 NA 案例而不用 -Inf 值替换 NA 案例。
这变得有点不寻常的是,当我使用以下方式查看数据框时:
View(Test.Summary.VO2)
我收到以下一系列警告消息:
There were 38 warnings (use warnings() to see them)
warnings()
Warning messages:
1: Unknown or uninitialised column: 'Quad'.
2: Unknown or uninitialised column: 'Quad'.
3: Unknown or uninitialised column: 'Quad'.
4: Unknown or uninitialised column: 'Quad'.
稍后在脚本中我生成了一个名为 "Quad" 的新变量。但是即使在我清除环境并重新启动 R Studio 之后,上面的警告也会出现。我什至尝试重命名 .csv 文件并使用不同的数据框名称导入。就好像稍后在脚本中生成的列 'Quad' 挂在环境中的某个地方。
我真的不知道这里会发生什么。
我希望 Stack 上的一位 R 专家可以为我提供有关如何解决此问题的想法。
感谢您的考虑。
参见?max
:
The minimum and maximum of a numeric empty set are +Inf and -Inf (in this order!) which ensures transitivity, e.g., min(x1, min(x2)) == min(x1, x2)
. For numeric x max(x) == -Inf
and min(x) == +Inf
whenever length(x) == 0
(after removing missing values if requested). However, pmax
and pmin
return NA
if all the parallel elements are NA
even for na.rm = TRUE
.
D 组没有任何非 NA 值,因此 max
returns 空集的值。
迟到了,但解决方案是 return NA 而不是 Inf,因为没有价值可以最大化。这可以通过 hablar 包的 s 函数来完成。
library(dplyr)
library(hablar)
VO2 %>%
group_by(Name, Sex) %>%
summarise(Best.Score = max(s(VO2)))
这给你:
Name Sex Best.Score
<chr> <chr> <int>
1 AthleteA M 52
2 AthleteB M 56
3 AthleteC M 42
4 AthleteD M NA
我最近构建了一个简单的 R 脚本来总结三个不同的数据框。自从更新到最新版本的 R 和 R Studio 后,我 运行 在 dplyr 中仅对一个数据帧使用 summarize 函数(其他两个都很好)时,我进入了一个我以前从未见过的输出.我还收到了一系列我不熟悉的警告。请注意,在更新之前,我 运行 脚本与编写的完全一致,任何数据帧都没有问题。
有问题的数据帧称为VO2,其设置如下:
Name Sex VO2
AthleteA M 50
AthleteA M 52
AthleteA M NA
AthleteB M 49
AthleteB M 56
AthleteB M 47
AthleteC M 42
AthleteC M NA
AthleteC M 41
AthleteD M NA
AthleteD M NA
AthleteD M NA
我运行的代码是:
Test.Summary.VO2 = VO2 %>% group_by(Name, Sex) %>%
summarise(Best.Score = max(VO2, na.rm=TRUE))
此代码生成以下摘要:
Name Sex Best.Score
AthleteA M 52
AthleteB M 56
AthleteC M 42
AthleteD M -Inf
-Inf 值在输出中是全新的。我不明白为什么它现在出现在只有 NA 的情况下。
如上所述,我对第二个数据框有完全相同的布局,运行 具有相同类型的摘要。这里一切正常。当我用 na.rm=TRUE 进行总结时,它会删除 NA 案例而不用 -Inf 值替换 NA 案例。
这变得有点不寻常的是,当我使用以下方式查看数据框时:
View(Test.Summary.VO2)
我收到以下一系列警告消息:
There were 38 warnings (use warnings() to see them)
warnings()
Warning messages:
1: Unknown or uninitialised column: 'Quad'.
2: Unknown or uninitialised column: 'Quad'.
3: Unknown or uninitialised column: 'Quad'.
4: Unknown or uninitialised column: 'Quad'.
稍后在脚本中我生成了一个名为 "Quad" 的新变量。但是即使在我清除环境并重新启动 R Studio 之后,上面的警告也会出现。我什至尝试重命名 .csv 文件并使用不同的数据框名称导入。就好像稍后在脚本中生成的列 'Quad' 挂在环境中的某个地方。
我真的不知道这里会发生什么。
我希望 Stack 上的一位 R 专家可以为我提供有关如何解决此问题的想法。
感谢您的考虑。
参见?max
:
The minimum and maximum of a numeric empty set are +Inf and -Inf (in this order!) which ensures transitivity, e.g.,
min(x1, min(x2)) == min(x1, x2)
. For numeric xmax(x) == -Inf
andmin(x) == +Inf
wheneverlength(x) == 0
(after removing missing values if requested). However,pmax
andpmin
returnNA
if all the parallel elements areNA
even forna.rm = TRUE
.
D 组没有任何非 NA 值,因此 max
returns 空集的值。
迟到了,但解决方案是 return NA 而不是 Inf,因为没有价值可以最大化。这可以通过 hablar 包的 s 函数来完成。
library(dplyr)
library(hablar)
VO2 %>%
group_by(Name, Sex) %>%
summarise(Best.Score = max(s(VO2)))
这给你:
Name Sex Best.Score
<chr> <chr> <int>
1 AthleteA M 52
2 AthleteB M 56
3 AthleteC M 42
4 AthleteD M NA