作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下玩具数据和计算:
library(dplyr)
df <- tibble(x = 1)
stats::sd(df$x)
dplyr::summarise(df, sd_x = sd(x))
NA
,而第二个计算结果包括在dplyr函数中时,
summarise
会生成
NaN
。我希望两种计算都能产生相同的结果,并且我想知道为什么它们不同吗?
最佳答案
它正在调用其他函数。我不清楚该函数是什么,但它不是stats
之一。
dplyr::summarise(df, sd_x = stats::sd(x))
# A tibble: 1 x 1
sd_x
<dbl>
1 NA
debugonce(sd) # debug to see when sd is called
dplyr::summarise(df, sd_x = sd(x))
# A tibble: 1 x 1
sd_x
<dbl>
1 NaN
dplyr::summarise(df, sd_x = stats::sd(x))
debugging in: stats::sd(1)
debug: sqrt(var(if (is.vector(x) || is.factor(x)) x else as.double(x),
na.rm = na.rm))
...
sd
中的
summarise
在R之外计算,在此头文件中提示:
https://github.com/tidyverse/dplyr/blob/master/inst/include/dplyr/Result/Sd.h
var
在两种情况下给出的结果相同,我认为sd行为是一个错误。
关于r - Dplyr产生NaN,而碱基R产生NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47814041/
我是一名优秀的程序员,十分优秀!