gpt4 book ai didi

r - 在 reshape2 中使用 min 或 max 时没有非缺失参数警告

转载 作者:行者123 更新时间:2023-12-03 08:39:58 25 4
gpt4 key购买 nike

当我在 reshape2 包的 dcast 函数中使用 min 或 max 时,我收到以下警告。它在告诉我什么?我找不到任何可以解释警告消息的内容,而且我对为什么在使用 max 时得到它而不是在使用 mean 或其他聚合函数时得到它感到有些困惑。

Warning message:
In .fun(.value[0], ...) : no non-missing arguments to min; returning Inf



这是一个可重现的示例:
data(iris)

library(reshape2)

molten.iris <- melt(iris,id.var="Species")
summary(molten.iris)
str(molten.iris)
#------------------------------------------------------------
# Both return warning:
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=min)
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=max)

# Length looks fine though
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=length)

#------------------------------------------------------------
# No warning messages here:
aggregate(value ~ Species + variable, FUN=min, data=molten.iris)
aggregate(value ~ Species + variable, FUN=max, data=molten.iris)
#------------------------------------------------------------
# Or here:
library(plyr)

ddply(molten.iris,c("Species","variable"),function(df){
data.frame(
"min"=min(df$value),
"max"=max(df$value)
)
})
#------------------------------------------------------------

最佳答案

您收到此警告是因为最小值/最大值应用于长度为 0 参数的数字。
这会重现警告。

min(numeric(0))
[1] Inf
Warning message:
In min(numeric(0)) : no non-missing arguments to min; returning Inf
请注意,对于 mean你没有收到警告:
mean(numeric(0))
[1] NaN
这只是一个警告,对计算没有任何影响。您可以使用 suppressWarnings 来抑制它:
 suppressWarnings(dcast(data=molten.iris,
Species~variable,value.var="value",
fun.aggregate=min))
编辑
以上我只是在回答这个问题:警告的含义是什么?以及为什么我们有这个最小值/最大值而不是平均函数。问题为什么 dcast正在将聚合函数应用于长度为 0 的向量,这只是一个 BUG,您应该联系包维护者。我认为错误来自 plyr::vaggregate dcast 内部使用的函数,
plyr::vaggregate(1:3,1:3,min)
Error in .fun(.value[0], ...) :
(converted from warning) no non-missing arguments to min; returning Inf
特别是这行代码:
plyr::vaggregate
function (.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
{
### some lines
....
### Here I don't understand the meaning of .value[0]
### since vector in R starts from 1 not zeros!!!
if (is.null(.default)) {
.default <- .fun(.value[0], ...)
}
## the rest of the function
.....
}

关于r - 在 reshape2 中使用 min 或 max 时没有非缺失参数警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com