将median()函数应用于数据帧时,我注意到一些不一致的行为."行为不一致"通常意味着我不理解某些事情,所以我希望有人愿意为我解决这个问题.
我知道一些功能(例如,min(),max())转换数据帧到载体和用于在整个DF返回对应的值mean()和sd()对于每列返回一个值.虽然有点令人困惑,但这些行为上的差异不会引起很多问题,因为如果返回标量而不是向量,大多数代码都会中断.但是,median()似乎不一致.例如:
dat <- data.frame(x=1:100, y=2:101)
median(dat)
Run Code Online (Sandbox Code Playgroud)
返回一个向量:[1] 50.5 51.5
但是,有时会打破:
dat2 <- data.frame(x=1:100, y=rnorm(100))
median(dat2)
Run Code Online (Sandbox Code Playgroud)
返回: [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)
Run Code Online (Sandbox Code Playgroud)
在上面,median(dat3)返回[1] 50.5 …
r ×1