gpt4 book ai didi

r - 中值()的奇怪行为?

转载 作者:行者123 更新时间:2023-12-04 03:09:35 28 4
gpt4 key购买 nike

在应用 median() 时,我注意到一些不一致的行为函数到数据帧。 “不一致的行为”通常意味着我不明白某事,所以我希望有人愿意为我澄清这一点。

我意识到某些函数(例如, min()max() )将数据帧转换为向量并返回整个 df 的相应值,而 mean()sd()为每一列返回一个值。虽然有点令人困惑,但这些行为上的差异不会引起很多问题,因为如果返回标量而不是向量,大多数代码都会中断。然而,median()似乎不一致。例如:

dat <- data.frame(x=1:100, y=2:101)
median(dat)

返回一个向量: [1] 50.5 51.5
但是,有时它会中断:
dat2 <- data.frame(x=1:100, y=rnorm(100))
median(dat2)

返回: [1] NA NA
Warning messages:
1: In mean.default(X[[1L]], ...) :
argument is not numeric or logical: returning NA
2: In mean.default(X[[2L]], ...) :
argument is not numeric or logical: returning NA

然而, median(dat2$x)median(dat2$y)两者都产生正确的结果。

还要考虑以下几点:
dat3 <- data.frame(x=1:100, y=1:100)
dat4 <- data.frame(x=1:100, y=100:199)

在上面, median(dat3)返回 [1] 50.5 NAmedian(dat4)返回 [1] 50.5 149.5 !我希望这两种方法都能起作用,或者两者都不起作用。所以,我显然不明白 median()功能正在运行。

此外,函数如 sd , mean() , min()max()在上述所有情况下,所有结果都产生了预期的(如果看似不一致)结果。

我知道我可以使用类似 sapply(dat2, median) 的东西以获得必要的结果,但我想知道为什么 R 神选择以一种至少在表面上似乎不一致的方式来实现这些核心统计功能。我怀疑我,可能还有其他新手,可能不理解一些基本概念,我很感激你的洞察力。

最佳答案

最近在 median and data frames 中讨论了这种确切的现象。 R-devel 上的线程。共识似乎是mean.data.frame方法应该被弃用,用户应该依赖 sapply .

关于r - 中值()的奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902183/

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